forked from nuttx/nuttx-update
libs/libc/modlib: fix dynamic loader issues
* build-globals.sh - Macros for defining symbols etc. based on assembler in use - Use the System.map to get all the nuttx symbols * libs/libc/modlib/modlib_globals.S - Provide an empty skeleton. If the dynamic loading functions are required then run build-global.sh after a clean build using the skeleton. This will fill out the skeleton with the symbols to be available to dynamically loaded modules. * libs/libc/modlib/modlib_loadhdrs.c - Fix case where there are no program headers are avaiable
This commit is contained in:
parent
a5d1d2d4e5
commit
b5cd7c2a82
8 changed files with 185 additions and 4015 deletions
125
build-globals.sh
125
build-globals.sh
|
@ -13,6 +13,8 @@ findEP()
|
||||||
SIZE=${#SYM[@]}
|
SIZE=${#SYM[@]}
|
||||||
L=0
|
L=0
|
||||||
R=$((SIZE - 1))
|
R=$((SIZE - 1))
|
||||||
|
OLDL=99999999
|
||||||
|
OLDR=99999999
|
||||||
while [ ${L} -le ${R} ]
|
while [ ${L} -le ${R} ]
|
||||||
do
|
do
|
||||||
T=$(( L + R ))
|
T=$(( L + R ))
|
||||||
|
@ -26,6 +28,11 @@ findEP()
|
||||||
else
|
else
|
||||||
R=$(( M - 1 ))
|
R=$(( M - 1 ))
|
||||||
fi
|
fi
|
||||||
|
if [ ${OLDL} -eq ${L} -a ${OLDR} -eq ${R} ]; then
|
||||||
|
: return 0
|
||||||
|
fi
|
||||||
|
OLDL=${L}
|
||||||
|
OLDR=${R}
|
||||||
done
|
done
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -38,30 +45,36 @@ getEP()
|
||||||
{
|
{
|
||||||
for ((i = 0; i < ${#OBJ[@]}; i++))
|
for ((i = 0; i < ${#OBJ[@]}; i++))
|
||||||
do
|
do
|
||||||
FUNCS=`${NM} -g --defined-only ../staging/${OBJ[$i]} | awk '{print $3}' | sort | grep -Ev ${FILTER}`
|
if [ -f staging/${OBJ[$i]} ]; then
|
||||||
FUNC=(${FUNCS})
|
FUNCS=`${NM} -g --defined-only staging/${OBJ[$i]} 2>/dev/null | grep "^0" | awk '{print $3}' | sort | grep -Ev ${FILTER}`
|
||||||
for ((j = 0; j < ${#FUNC[@]}; j++))
|
FUNC=(${FUNCS})
|
||||||
do
|
for ((j = 0; j < ${#FUNC[@]}; j++))
|
||||||
findEP ${FUNC[$j]}
|
do
|
||||||
if [ $? -eq 1 ]; then
|
findEP ${FUNC[$j]}
|
||||||
EP[${I_EP}]=${FUNC[$j]}
|
if [ $? -eq 1 ]; then
|
||||||
I_EP=$((I_EP + 1))
|
EP[${I_EP}]=${FUNC[$j]}
|
||||||
fi
|
I_EP=$((I_EP + 1))
|
||||||
done
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Symbols to ignore within the NuttX libraries
|
# Symbols to ignore within the NuttX libraries
|
||||||
#
|
#
|
||||||
FILTER="^lib_low|^FUNCTION|^STUB|^__start|^_vect|^arm_|^arp_|^bch|^binfmt|^blake|^block_|^cdcacm|^chksum|^clock_|^close_|^crypto_|^devif_|^devnull|^devuran|^devzero|^emerg|^epoll_|^elf_|^_dbgR|^dq_|^env_|^file_|^files_|^fs_|^ftl_|^g_|^get_|^group_|^global|^hcom|^i2c_|^inode_|^iob_|^irq_|^kmm_|^lfs_|^lib_|^local_|^mm_|^modlib_|^mpu_|^mq_|^nGlobals|^net_|^netdev_|^nx|^pipecommon|^posix_spawn_file|^psock_|^ramlog|^rammap|^readline_|^register_|^sched_|^sockfd|^spawn_|^sq_|^stm32|^symtab_|^syslog_|^syslogstream|^task_|^tcp_|^timer_|^uart_|^ub[12]|^udp_|^umm_|^umount|^unload_|^unregister|^up_|^usb|^usrsock_|^watchdog|^wd_"
|
FILTER="^lib_low|^FUNCTION|^STUB|^__start|^_vect|^arm_|^arp_|^bch|^binfmt|^blake|^block_|^cdcacm|^chksum|^clock_|^close_|^crypto_|^devif_|^devnull|^devuran|^devzero|^emerg|^epoll_|^elf_|^_dbgR|^dq_|^env_|^file_|^files_|^fs_|^ftl_|^g_|^get_|^group_|^global|^hcom|^i2c_|^inode_|^iob_|^irq_|^kmm_|^lfs_|^lib_|^local_|^mm_|^modlib_|^mpu_|^mq_|^nGlobals|^net_|^netdev_|^nx|^pipecommon|^posix_spawn_file|^psock_|^ramlog|^rammap|^readline_|^register_|^sched_|^sockfd|^spawn_|^sq_|^stm32|^symtab_|^syslog_|^syslogstream|^task_|^tcp_|^timer_|^uart_|^ub[12]|^udp_|^umm_|^umount|^unload_|^unregister|^up_|^usb|^usrsock_|^watchdog|^wd_|globalNames$|nGlobals$|globalTable$|^\.l"
|
||||||
|
|
||||||
|
if [ -z "${NM}" ]; then
|
||||||
|
NM="nm"
|
||||||
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Extract symbols from the runtime
|
# Extract symbols from the runtime
|
||||||
#
|
#
|
||||||
SYMS=`${NM} ../nuttx | awk '{print $3}' | sort | grep -Ev ${FILTER}`
|
SYMS=`cat System.map | awk '{print $3}' | sort | grep -Ev ${FILTER}`
|
||||||
SYM=(${SYMS})
|
SYM=(${SYMS})
|
||||||
GLOBALS="../libs/libc/modlib/modlib_globals.S"
|
GLOBALS="libs/libc/modlib/modlib_globals.S"
|
||||||
I_EP=0
|
I_EP=0
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -80,70 +93,100 @@ EP=(${EPS})
|
||||||
#
|
#
|
||||||
# Generate the modlib_xxxx_globals.S file
|
# Generate the modlib_xxxx_globals.S file
|
||||||
#
|
#
|
||||||
GLOBALS="libs/libc/modlib/modlib_${arch}_globals.S"
|
|
||||||
cat >${GLOBALS} <<__EOF__
|
cat >${GLOBALS} <<__EOF__
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
# define SYMBOL(s) _##s
|
||||||
|
# define WEAK .weak
|
||||||
|
# define GLOBAL .global
|
||||||
|
# define SECTION .data
|
||||||
|
.macro GLOBAL ep
|
||||||
|
.global SYMBOL(\ep)
|
||||||
|
.type SYMBOL(\ep), "object"
|
||||||
|
.endm
|
||||||
|
.macro SIZE ep
|
||||||
|
.endm
|
||||||
|
#elif defined(__ELF__)
|
||||||
|
# define SYMBOL(s) s
|
||||||
|
# define WEAK .weak
|
||||||
|
# define SECTION .data
|
||||||
|
.macro GLOBAL ep
|
||||||
|
.global SYMBOL(\ep)
|
||||||
|
.type SYMBOL(\ep), "object"
|
||||||
|
.endm
|
||||||
|
.macro SIZE ep
|
||||||
|
.size SYMBOL(\ep), . - SYMBOL(\ep)
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
|
# define SYMBOL(s) _##s
|
||||||
|
# define WEAK .weak_definition
|
||||||
|
# define SECTION .section __DATA,__data
|
||||||
|
.macro GLOBAL ep
|
||||||
|
.private_extern SYMBOL(\ep)
|
||||||
|
.globl SYMBOL(\ep)
|
||||||
|
.endm
|
||||||
|
.macro SIZE ep
|
||||||
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __SIZEOF_POINTER__ == 8
|
#if __SIZEOF_POINTER__ == 8
|
||||||
.macro globalEntry index, ep
|
.macro globalEntry index, ep
|
||||||
.weak \p
|
WEAK SYMBOL(\ep)
|
||||||
.quad .L\index
|
.quad .l\index
|
||||||
.quad \ep
|
.quad \ep
|
||||||
.endm
|
.endm
|
||||||
# define ALIGN 8
|
# define ALIGN 8
|
||||||
#else
|
#else
|
||||||
.macro globalEntry index, ep
|
.macro globalEntry index, ep
|
||||||
.weak \ep
|
WEAK SYMBOL(\ep)
|
||||||
.long .L\index
|
.long .l\index
|
||||||
.long \ep
|
.long \ep
|
||||||
.endm
|
.endm
|
||||||
# define ALIGN 4
|
# define ALIGN 4
|
||||||
#endif
|
#endif
|
||||||
#ifdef __ARM_ARCH_ISA_THUMB2
|
#ifdef __ARM_ARCH_ISA_THUMB2
|
||||||
# ifdef __ARM_ARCH_7M__
|
# ifdef __ARM_ARCH_7M__
|
||||||
.arch armv7e-m
|
.arch armv7e-m
|
||||||
# elif defined ___ARM_ARCH 8
|
# elif defined ___ARM_ARCH 8
|
||||||
.arch armv8-m.base
|
.arch armv8-m.base
|
||||||
#endif
|
#endif
|
||||||
#ifdef __ARM_ASM_SYNTAX_UNIFIED__
|
#ifdef __ARM_ASM_SYNTAX_UNIFIED__
|
||||||
.syntax unified
|
.syntax unified
|
||||||
#endif
|
#endif
|
||||||
.thumb
|
.thumb
|
||||||
#endif
|
#endif
|
||||||
.data
|
.data
|
||||||
.align ALIGN
|
.align ALIGN
|
||||||
.global globalNames
|
GLOBAL globalNames
|
||||||
|
|
||||||
globalNames:
|
SYMBOL(globalNames):
|
||||||
__EOF__
|
__EOF__
|
||||||
|
|
||||||
for ((i = 0; i < ${#EP[@]}; i++))
|
for ((i = 0; i < ${#EP[@]}; i++))
|
||||||
do
|
do
|
||||||
echo ".L${i}: .string \"${EP[$i]}\"" >>${GLOBALS}
|
echo ".l${i}: .string \"${EP[$i]}\"" >>${GLOBALS}
|
||||||
done
|
done
|
||||||
|
|
||||||
cat >>${GLOBALS} <<__EOF__
|
cat >>${GLOBALS} <<__EOF__
|
||||||
.size globalNames, . - globalNames
|
SIZE globalNames
|
||||||
|
|
||||||
.align ${ALIGN}
|
.align ALIGN
|
||||||
.global nGlobals
|
GLOBAL nGlobals
|
||||||
.type nGlobals, "object"
|
SYMBOL(nGlobals):
|
||||||
nGlobals:
|
|
||||||
.word ${#EP[@]}
|
.word ${#EP[@]}
|
||||||
.size nGlobals, . - nGlobals
|
SIZE nGlobals
|
||||||
|
|
||||||
.align ${ALIGN}
|
.align ALIGN
|
||||||
.global globalTable
|
GLOBAL globalTable
|
||||||
.type globalTable, "object"
|
SYMBOL(globalTable):
|
||||||
globalTable:
|
|
||||||
__EOF__
|
__EOF__
|
||||||
|
|
||||||
for ((i = 0; i < ${#EP[@]}; i++))
|
for ((i = 0; i < ${#EP[@]}; i++))
|
||||||
do
|
do
|
||||||
echo " globalEntry ${i}, ${EP[$i]}" >>${GLOBALS}
|
echo " globalEntry ${i}, ${EP[$i]}" >>${GLOBALS}
|
||||||
done
|
done
|
||||||
|
|
||||||
cat >>${GLOBALS} <<__EOF__
|
cat >>${GLOBALS} <<__EOF__
|
||||||
.size globalTable, . - globalTable
|
SIZE globalTable
|
||||||
__EOF__
|
__EOF__
|
||||||
|
|
||||||
done
|
|
||||||
echo "${#EP[@]} symbols defined"
|
echo "${#EP[@]} symbols defined"
|
||||||
|
|
|
@ -493,14 +493,10 @@ int up_relocate(const Elf32_Rel *rel, const Elf32_Sym *sym, uintptr_t addr)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case R_ARM_RELATIVE :
|
case R_ARM_RELATIVE:
|
||||||
case R_ARM_JUMP_SLOT :
|
case R_ARM_JUMP_SLOT:
|
||||||
{
|
{
|
||||||
binfo("Relocating: RELATIVE/JUMP_SLOT at %p value: %08lx"
|
*(uint32_t *)addr = (uint32_t)sym->st_value;
|
||||||
"with %08lx\n",
|
|
||||||
(void *)addr, *(unsigned long *)addr,
|
|
||||||
(unsigned long)sym->st_value);
|
|
||||||
*(uint32_t *) addr = (uint32_t) sym->st_value;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -70,14 +70,6 @@ int modlib_loadhdrs(FAR struct mod_loadinfo_s *loadinfo)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Verify that there are program headers */
|
|
||||||
|
|
||||||
if (loadinfo->ehdr.e_phnum < 1)
|
|
||||||
{
|
|
||||||
berr("ERROR: No program headers(?)\n");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the total size of the section header table */
|
/* Get the total size of the section header table */
|
||||||
|
|
||||||
shdrsize = (size_t)loadinfo->ehdr.e_shentsize *
|
shdrsize = (size_t)loadinfo->ehdr.e_shentsize *
|
||||||
|
@ -88,19 +80,9 @@ int modlib_loadhdrs(FAR struct mod_loadinfo_s *loadinfo)
|
||||||
return -ESPIPE;
|
return -ESPIPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the total size of the program header table */
|
|
||||||
|
|
||||||
phdrsize = (size_t)loadinfo->ehdr.e_phentsize *
|
|
||||||
(size_t)loadinfo->ehdr.e_phnum;
|
|
||||||
if (loadinfo->ehdr.e_phoff + phdrsize > loadinfo->filelen)
|
|
||||||
{
|
|
||||||
berr("ERROR: Insufficent space in file for program header table\n");
|
|
||||||
return -ESPIPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate memory to hold a working copy of the sector header table */
|
/* Allocate memory to hold a working copy of the sector header table */
|
||||||
|
|
||||||
loadinfo->shdr = (FAR FAR Elf_Shdr *)lib_malloc(shdrsize);
|
loadinfo->shdr = (FAR Elf_Shdr *)lib_malloc(shdrsize);
|
||||||
if (!loadinfo->shdr)
|
if (!loadinfo->shdr)
|
||||||
{
|
{
|
||||||
berr("ERROR: Failed to allocate the section header table. Size: %ld\n",
|
berr("ERROR: Failed to allocate the section header table. Size: %ld\n",
|
||||||
|
@ -117,26 +99,43 @@ int modlib_loadhdrs(FAR struct mod_loadinfo_s *loadinfo)
|
||||||
berr("ERROR: Failed to read section header table: %d\n", ret);
|
berr("ERROR: Failed to read section header table: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate memory to hold a working copy of the program header table */
|
if (loadinfo->ehdr.e_phnum > 0)
|
||||||
|
|
||||||
loadinfo->phdr = (FAR FAR Elf_Phdr *)lib_malloc(phdrsize);
|
|
||||||
if (!loadinfo->shdr)
|
|
||||||
{
|
{
|
||||||
lib_free((FAR void *)loadinfo->shdr);
|
/* Get the total size of the program header table */
|
||||||
berr("ERROR: Failed to allocate the program header table. Size: %ld\n",
|
|
||||||
(long)phdrsize);
|
phdrsize = (size_t)loadinfo->ehdr.e_phentsize *
|
||||||
return -ENOMEM;
|
(size_t)loadinfo->ehdr.e_phnum;
|
||||||
|
if (loadinfo->ehdr.e_phoff + phdrsize > loadinfo->filelen)
|
||||||
|
{
|
||||||
|
berr("ERROR: Insufficent space for program header table\n");
|
||||||
|
return -ESPIPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate memory to hold a working copy of the program header table */
|
||||||
|
|
||||||
|
loadinfo->phdr = (FAR Elf_Phdr *)lib_malloc(phdrsize);
|
||||||
|
if (!loadinfo->phdr)
|
||||||
|
{
|
||||||
|
lib_free((FAR void *)loadinfo->shdr);
|
||||||
|
berr("ERROR: Failed to allocate the program header table."
|
||||||
|
"Size: %ld\n", (long)phdrsize);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read the program header table into memory */
|
||||||
|
|
||||||
|
ret = modlib_read(loadinfo, (FAR uint8_t *)loadinfo->phdr, phdrsize,
|
||||||
|
loadinfo->ehdr.e_phoff);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
berr("ERROR: Failed to read program header table: %d\n", ret);
|
||||||
|
lib_free((FAR void *)loadinfo->phdr);
|
||||||
|
lib_free((FAR void *)loadinfo->shdr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/* Read the program header table into memory */
|
|
||||||
|
|
||||||
ret = modlib_read(loadinfo, (FAR uint8_t *)loadinfo->phdr, phdrsize,
|
|
||||||
loadinfo->ehdr.e_phoff);
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
{
|
||||||
berr("ERROR: Failed to read program header table: %d\n", ret);
|
loadinfo->phdr = NULL;
|
||||||
lib_free((FAR void *)loadinfo->phdr);
|
|
||||||
lib_free((FAR void *)loadinfo->shdr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -80,11 +80,11 @@ int modlib_verifyheader(FAR const Elf_Ehdr *ehdr)
|
||||||
|
|
||||||
if (ehdr->e_type != ET_REL)
|
if (ehdr->e_type != ET_REL)
|
||||||
{
|
{
|
||||||
if (ehdr->e_type != ET_DYN)
|
if (ehdr->e_type != ET_DYN)
|
||||||
{
|
{
|
||||||
berr("ERROR: Not a relocatable file: e_type=%d\n", ehdr->e_type);
|
berr("ERROR: Not a relocatable file: e_type=%d\n", ehdr->e_type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Verify that this file works with the currently configured architecture */
|
/* Verify that this file works with the currently configured architecture */
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,565 +0,0 @@
|
||||||
.data
|
|
||||||
.align 8
|
|
||||||
.global globalNames
|
|
||||||
|
|
||||||
globalNames:
|
|
||||||
.L0: .string "accept4"
|
|
||||||
.L1: .string "clearenv"
|
|
||||||
.L2: .string "cmd_alias"
|
|
||||||
.L3: .string "cmd_arp"
|
|
||||||
.L4: .string "cmd_basename"
|
|
||||||
.L5: .string "cmd_break"
|
|
||||||
.L6: .string "cmd_cat"
|
|
||||||
.L7: .string "cmd_cd"
|
|
||||||
.L8: .string "cmd_cmp"
|
|
||||||
.L9: .string "cmd_cp"
|
|
||||||
.L10: .string "cmd_date"
|
|
||||||
.L11: .string "cmd_dd"
|
|
||||||
.L12: .string "cmd_dirname"
|
|
||||||
.L13: .string "cmd_dmesg"
|
|
||||||
.L14: .string "cmd_echo"
|
|
||||||
.L15: .string "cmd_exec"
|
|
||||||
.L16: .string "cmd_hexdump"
|
|
||||||
.L17: .string "cmd_insmod"
|
|
||||||
.L18: .string "cmd_kill"
|
|
||||||
.L19: .string "cmd_lbracket"
|
|
||||||
.L20: .string "cmd_losetup"
|
|
||||||
.L21: .string "cmd_ls"
|
|
||||||
.L22: .string "cmd_mkdir"
|
|
||||||
.L23: .string "cmd_mkfifo"
|
|
||||||
.L24: .string "cmd_mkrd"
|
|
||||||
.L25: .string "cmd_mount"
|
|
||||||
.L26: .string "cmd_mv"
|
|
||||||
.L27: .string "cmd_nslookup"
|
|
||||||
.L28: .string "cmd_poweroff"
|
|
||||||
.L29: .string "cmd_printf"
|
|
||||||
.L30: .string "cmd_pwd"
|
|
||||||
.L31: .string "cmd_rm"
|
|
||||||
.L32: .string "cmd_rmdir"
|
|
||||||
.L33: .string "cmd_rmmod"
|
|
||||||
.L34: .string "cmd_set"
|
|
||||||
.L35: .string "cmd_sleep"
|
|
||||||
.L36: .string "cmd_source"
|
|
||||||
.L37: .string "cmd_test"
|
|
||||||
.L38: .string "cmd_time"
|
|
||||||
.L39: .string "cmd_truncate"
|
|
||||||
.L40: .string "cmd_umount"
|
|
||||||
.L41: .string "cmd_unalias"
|
|
||||||
.L42: .string "cmd_uname"
|
|
||||||
.L43: .string "cmd_unset"
|
|
||||||
.L44: .string "cmd_uptime"
|
|
||||||
.L45: .string "cmd_usleep"
|
|
||||||
.L46: .string "cmd_xd"
|
|
||||||
.L47: .string "cmsg_append"
|
|
||||||
.L48: .string "dir_allocate"
|
|
||||||
.L49: .string "exec_builtin"
|
|
||||||
.L50: .string "icmp_alloc"
|
|
||||||
.L51: .string "icmp_chksum_iob"
|
|
||||||
.L52: .string "icmp_findconn"
|
|
||||||
.L53: .string "icmp_free"
|
|
||||||
.L54: .string "icmp_input"
|
|
||||||
.L55: .string "icmp_ioctl"
|
|
||||||
.L56: .string "icmp_nextconn"
|
|
||||||
.L57: .string "icmp_poll"
|
|
||||||
.L58: .string "icmp_pollsetup"
|
|
||||||
.L59: .string "icmp_pollteardown"
|
|
||||||
.L60: .string "icmp_recvmsg"
|
|
||||||
.L61: .string "icmp_reply"
|
|
||||||
.L62: .string "icmp_sendmsg"
|
|
||||||
.L63: .string "icmpv6_advertise"
|
|
||||||
.L64: .string "icmpv6_alloc"
|
|
||||||
.L65: .string "icmpv6_autoconfig"
|
|
||||||
.L66: .string "icmpv6_chksum"
|
|
||||||
.L67: .string "icmpv6_foreach"
|
|
||||||
.L68: .string "icmpv6_free"
|
|
||||||
.L69: .string "icmpv6_input"
|
|
||||||
.L70: .string "icmpv6_ioctl"
|
|
||||||
.L71: .string "icmpv6_linkipaddr"
|
|
||||||
.L72: .string "icmpv6_neighbor"
|
|
||||||
.L73: .string "icmpv6_nextconn"
|
|
||||||
.L74: .string "icmpv6_notify"
|
|
||||||
.L75: .string "icmpv6_poll"
|
|
||||||
.L76: .string "icmpv6_pollsetup"
|
|
||||||
.L77: .string "icmpv6_pollteardown"
|
|
||||||
.L78: .string "icmpv6_radvertise"
|
|
||||||
.L79: .string "icmpv6_recvmsg"
|
|
||||||
.L80: .string "icmpv6_reply"
|
|
||||||
.L81: .string "icmpv6_rnotify"
|
|
||||||
.L82: .string "icmpv6_rsolicit"
|
|
||||||
.L83: .string "icmpv6_rwait"
|
|
||||||
.L84: .string "icmpv6_rwait_cancel"
|
|
||||||
.L85: .string "icmpv6_rwait_setup"
|
|
||||||
.L86: .string "icmpv6_sendmsg"
|
|
||||||
.L87: .string "icmpv6_setaddresses"
|
|
||||||
.L88: .string "icmpv6_solicit"
|
|
||||||
.L89: .string "icmpv6_wait"
|
|
||||||
.L90: .string "icmpv6_wait_cancel"
|
|
||||||
.L91: .string "icmpv6_wait_setup"
|
|
||||||
.L92: .string "inet_close"
|
|
||||||
.L93: .string "insmod"
|
|
||||||
.L94: .string "ipv4_build_header"
|
|
||||||
.L95: .string "ipv4_chksum"
|
|
||||||
.L96: .string "ipv4_getpeername"
|
|
||||||
.L97: .string "ipv4_getsockname"
|
|
||||||
.L98: .string "ipv4_getsockopt"
|
|
||||||
.L99: .string "ipv4_input"
|
|
||||||
.L100: .string "ipv4_setsockopt"
|
|
||||||
.L101: .string "ipv4_upperlayer_chksum"
|
|
||||||
.L102: .string "ipv6_build_header"
|
|
||||||
.L103: .string "ipv6_getpeername"
|
|
||||||
.L104: .string "ipv6_getsockname"
|
|
||||||
.L105: .string "ipv6_getsockopt"
|
|
||||||
.L106: .string "ipv6_input"
|
|
||||||
.L107: .string "ipv6_setsockopt"
|
|
||||||
.L108: .string "ipv6_upperlayer_chksum"
|
|
||||||
.L109: .string "kill"
|
|
||||||
.L110: .string "kthread_create"
|
|
||||||
.L111: .string "loop_register"
|
|
||||||
.L112: .string "losetup"
|
|
||||||
.L113: .string "loteardown"
|
|
||||||
.L114: .string "lstat"
|
|
||||||
.L115: .string "mkrd"
|
|
||||||
.L116: .string "modhandle"
|
|
||||||
.L117: .string "modsym"
|
|
||||||
.L118: .string "mount"
|
|
||||||
.L119: .string "neighbor_add"
|
|
||||||
.L120: .string "neighbor_ethernet_out"
|
|
||||||
.L121: .string "neighbor_findentry"
|
|
||||||
.L122: .string "neighbor_lookup"
|
|
||||||
.L123: .string "neighbor_out"
|
|
||||||
.L124: .string "netdown_notifier_signal"
|
|
||||||
.L125: .string "oneshot_register"
|
|
||||||
.L126: .string "open_blockdriver"
|
|
||||||
.L127: .string "panic_notifier_call_chain"
|
|
||||||
.L128: .string "poll_notify"
|
|
||||||
.L129: .string "pthread_cancel"
|
|
||||||
.L130: .string "pthread_completejoin"
|
|
||||||
.L131: .string "pthread_createjoininfo"
|
|
||||||
.L132: .string "pthread_destroyjoin"
|
|
||||||
.L133: .string "pthread_detach"
|
|
||||||
.L134: .string "pthread_findjoininfo"
|
|
||||||
.L135: .string "pthread_mutex_inconsistent"
|
|
||||||
.L136: .string "pthread_release"
|
|
||||||
.L137: .string "pthread_sem_give"
|
|
||||||
.L138: .string "pthread_setup_scheduler"
|
|
||||||
.L139: .string "ramdisk_register"
|
|
||||||
.L140: .string "reboot_notifier_call_chain"
|
|
||||||
.L141: .string "recv"
|
|
||||||
.L142: .string "recvmsg"
|
|
||||||
.L143: .string "rmmod"
|
|
||||||
.L144: .string "romfs_checkmount"
|
|
||||||
.L145: .string "romfs_datastart"
|
|
||||||
.L146: .string "romfs_filecacheread"
|
|
||||||
.L147: .string "romfs_fileconfigure"
|
|
||||||
.L148: .string "romfs_finddirentry"
|
|
||||||
.L149: .string "romfs_freenode"
|
|
||||||
.L150: .string "romfs_fsconfigure"
|
|
||||||
.L151: .string "romfs_hwconfigure"
|
|
||||||
.L152: .string "romfs_hwread"
|
|
||||||
.L153: .string "romfs_img"
|
|
||||||
.L154: .string "romfs_img_len"
|
|
||||||
.L155: .string "romfs_parsedirentry"
|
|
||||||
.L156: .string "romfs_parsefilename"
|
|
||||||
.L157: .string "rtc_initialize"
|
|
||||||
.L158: .string "sem_clockwait"
|
|
||||||
.L159: .string "sem_destroy"
|
|
||||||
.L160: .string "sem_post"
|
|
||||||
.L161: .string "sem_timedwait"
|
|
||||||
.L162: .string "sem_trywait"
|
|
||||||
.L163: .string "sem_wait"
|
|
||||||
.L164: .string "send"
|
|
||||||
.L165: .string "setenv"
|
|
||||||
.L166: .string "sh_main"
|
|
||||||
.L167: .string "sigpending"
|
|
||||||
.L168: .string "sigprocmask"
|
|
||||||
.L169: .string "sigtimedwait"
|
|
||||||
.L170: .string "sotest_main"
|
|
||||||
.L171: .string "sync"
|
|
||||||
.L172: .string "sysinfo"
|
|
||||||
.L173: .string "tcpip_hdrsize"
|
|
||||||
.L174: .string "tls_init_info"
|
|
||||||
.L175: .string "unsetenv"
|
|
||||||
.L176: .string "waitpid"
|
|
||||||
.L177: .string "work_cancel"
|
|
||||||
.L178: .string "work_notifier_signal"
|
|
||||||
.L179: .string "work_queue"
|
|
||||||
.L180: .string "work_start_highpri"
|
|
||||||
.L181: .string "work_start_lowpri"
|
|
||||||
.size globalNames, . - globalNames
|
|
||||||
|
|
||||||
.align 8
|
|
||||||
.global nGlobals
|
|
||||||
.type nGlobals, "object"
|
|
||||||
nGlobals:
|
|
||||||
.word 182
|
|
||||||
.size nGlobals, . - nGlobals
|
|
||||||
|
|
||||||
.align 8
|
|
||||||
.global globalTable
|
|
||||||
.type globalTable, "object"
|
|
||||||
globalTable:
|
|
||||||
.weak accept4
|
|
||||||
.weak clearenv
|
|
||||||
.weak cmd_alias
|
|
||||||
.weak cmd_arp
|
|
||||||
.weak cmd_basename
|
|
||||||
.weak cmd_break
|
|
||||||
.weak cmd_cat
|
|
||||||
.weak cmd_cd
|
|
||||||
.weak cmd_cmp
|
|
||||||
.weak cmd_cp
|
|
||||||
.weak cmd_date
|
|
||||||
.weak cmd_dd
|
|
||||||
.weak cmd_dirname
|
|
||||||
.weak cmd_dmesg
|
|
||||||
.weak cmd_echo
|
|
||||||
.weak cmd_exec
|
|
||||||
.weak cmd_hexdump
|
|
||||||
.weak cmd_insmod
|
|
||||||
.weak cmd_kill
|
|
||||||
.weak cmd_lbracket
|
|
||||||
.weak cmd_losetup
|
|
||||||
.weak cmd_ls
|
|
||||||
.weak cmd_mkdir
|
|
||||||
.weak cmd_mkfifo
|
|
||||||
.weak cmd_mkrd
|
|
||||||
.weak cmd_mount
|
|
||||||
.weak cmd_mv
|
|
||||||
.weak cmd_nslookup
|
|
||||||
.weak cmd_poweroff
|
|
||||||
.weak cmd_printf
|
|
||||||
.weak cmd_pwd
|
|
||||||
.weak cmd_rm
|
|
||||||
.weak cmd_rmdir
|
|
||||||
.weak cmd_rmmod
|
|
||||||
.weak cmd_set
|
|
||||||
.weak cmd_sleep
|
|
||||||
.weak cmd_source
|
|
||||||
.weak cmd_test
|
|
||||||
.weak cmd_time
|
|
||||||
.weak cmd_truncate
|
|
||||||
.weak cmd_umount
|
|
||||||
.weak cmd_unalias
|
|
||||||
.weak cmd_uname
|
|
||||||
.weak cmd_unset
|
|
||||||
.weak cmd_uptime
|
|
||||||
.weak cmd_usleep
|
|
||||||
.weak cmd_xd
|
|
||||||
.weak cmsg_append
|
|
||||||
.weak dir_allocate
|
|
||||||
.weak exec_builtin
|
|
||||||
.weak icmp_alloc
|
|
||||||
.weak icmp_chksum_iob
|
|
||||||
.weak icmp_findconn
|
|
||||||
.weak icmp_free
|
|
||||||
.weak icmp_input
|
|
||||||
.weak icmp_ioctl
|
|
||||||
.weak icmp_nextconn
|
|
||||||
.weak icmp_poll
|
|
||||||
.weak icmp_pollsetup
|
|
||||||
.weak icmp_pollteardown
|
|
||||||
.weak icmp_recvmsg
|
|
||||||
.weak icmp_reply
|
|
||||||
.weak icmp_sendmsg
|
|
||||||
.weak icmpv6_advertise
|
|
||||||
.weak icmpv6_alloc
|
|
||||||
.weak icmpv6_autoconfig
|
|
||||||
.weak icmpv6_chksum
|
|
||||||
.weak icmpv6_foreach
|
|
||||||
.weak icmpv6_free
|
|
||||||
.weak icmpv6_input
|
|
||||||
.weak icmpv6_ioctl
|
|
||||||
.weak icmpv6_linkipaddr
|
|
||||||
.weak icmpv6_neighbor
|
|
||||||
.weak icmpv6_nextconn
|
|
||||||
.weak icmpv6_notify
|
|
||||||
.weak icmpv6_poll
|
|
||||||
.weak icmpv6_pollsetup
|
|
||||||
.weak icmpv6_pollteardown
|
|
||||||
.weak icmpv6_radvertise
|
|
||||||
.weak icmpv6_recvmsg
|
|
||||||
.weak icmpv6_reply
|
|
||||||
.weak icmpv6_rnotify
|
|
||||||
.weak icmpv6_rsolicit
|
|
||||||
.weak icmpv6_rwait
|
|
||||||
.weak icmpv6_rwait_cancel
|
|
||||||
.weak icmpv6_rwait_setup
|
|
||||||
.weak icmpv6_sendmsg
|
|
||||||
.weak icmpv6_setaddresses
|
|
||||||
.weak icmpv6_solicit
|
|
||||||
.weak icmpv6_wait
|
|
||||||
.weak icmpv6_wait_cancel
|
|
||||||
.weak icmpv6_wait_setup
|
|
||||||
.weak inet_close
|
|
||||||
.weak insmod
|
|
||||||
.weak ipv4_build_header
|
|
||||||
.weak ipv4_chksum
|
|
||||||
.weak ipv4_getpeername
|
|
||||||
.weak ipv4_getsockname
|
|
||||||
.weak ipv4_getsockopt
|
|
||||||
.weak ipv4_input
|
|
||||||
.weak ipv4_setsockopt
|
|
||||||
.weak ipv4_upperlayer_chksum
|
|
||||||
.weak ipv6_build_header
|
|
||||||
.weak ipv6_getpeername
|
|
||||||
.weak ipv6_getsockname
|
|
||||||
.weak ipv6_getsockopt
|
|
||||||
.weak ipv6_input
|
|
||||||
.weak ipv6_setsockopt
|
|
||||||
.weak ipv6_upperlayer_chksum
|
|
||||||
.weak kill
|
|
||||||
.weak kthread_create
|
|
||||||
.weak loop_register
|
|
||||||
.weak losetup
|
|
||||||
.weak loteardown
|
|
||||||
.weak lstat
|
|
||||||
.weak mkrd
|
|
||||||
.weak modhandle
|
|
||||||
.weak modsym
|
|
||||||
.weak mount
|
|
||||||
.weak neighbor_add
|
|
||||||
.weak neighbor_ethernet_out
|
|
||||||
.weak neighbor_findentry
|
|
||||||
.weak neighbor_lookup
|
|
||||||
.weak neighbor_out
|
|
||||||
.weak netdown_notifier_signal
|
|
||||||
.weak oneshot_register
|
|
||||||
.weak open_blockdriver
|
|
||||||
.weak panic_notifier_call_chain
|
|
||||||
.weak poll_notify
|
|
||||||
.weak pthread_cancel
|
|
||||||
.weak pthread_completejoin
|
|
||||||
.weak pthread_createjoininfo
|
|
||||||
.weak pthread_destroyjoin
|
|
||||||
.weak pthread_detach
|
|
||||||
.weak pthread_findjoininfo
|
|
||||||
.weak pthread_mutex_inconsistent
|
|
||||||
.weak pthread_release
|
|
||||||
.weak pthread_sem_give
|
|
||||||
.weak pthread_setup_scheduler
|
|
||||||
.weak ramdisk_register
|
|
||||||
.weak reboot_notifier_call_chain
|
|
||||||
.weak recv
|
|
||||||
.weak recvmsg
|
|
||||||
.weak rmmod
|
|
||||||
.weak romfs_checkmount
|
|
||||||
.weak romfs_datastart
|
|
||||||
.weak romfs_filecacheread
|
|
||||||
.weak romfs_fileconfigure
|
|
||||||
.weak romfs_finddirentry
|
|
||||||
.weak romfs_freenode
|
|
||||||
.weak romfs_fsconfigure
|
|
||||||
.weak romfs_hwconfigure
|
|
||||||
.weak romfs_hwread
|
|
||||||
.weak romfs_img
|
|
||||||
.weak romfs_img_len
|
|
||||||
.weak romfs_parsedirentry
|
|
||||||
.weak romfs_parsefilename
|
|
||||||
.weak rtc_initialize
|
|
||||||
.weak sem_clockwait
|
|
||||||
.weak sem_destroy
|
|
||||||
.weak sem_post
|
|
||||||
.weak sem_timedwait
|
|
||||||
.weak sem_trywait
|
|
||||||
.weak sem_wait
|
|
||||||
.weak send
|
|
||||||
.weak setenv
|
|
||||||
.weak sh_main
|
|
||||||
.weak sigpending
|
|
||||||
.weak sigprocmask
|
|
||||||
.weak sigtimedwait
|
|
||||||
.weak sotest_main
|
|
||||||
.weak sync
|
|
||||||
.weak sysinfo
|
|
||||||
.weak tcpip_hdrsize
|
|
||||||
.weak tls_init_info
|
|
||||||
.weak unsetenv
|
|
||||||
.weak waitpid
|
|
||||||
.weak work_cancel
|
|
||||||
.weak work_notifier_signal
|
|
||||||
.weak work_queue
|
|
||||||
.weak work_start_highpri
|
|
||||||
.weak work_start_lowpri
|
|
||||||
.quad .L0, accept4
|
|
||||||
.quad .L1, clearenv
|
|
||||||
.quad .L2, cmd_alias
|
|
||||||
.quad .L3, cmd_arp
|
|
||||||
.quad .L4, cmd_basename
|
|
||||||
.quad .L5, cmd_break
|
|
||||||
.quad .L6, cmd_cat
|
|
||||||
.quad .L7, cmd_cd
|
|
||||||
.quad .L8, cmd_cmp
|
|
||||||
.quad .L9, cmd_cp
|
|
||||||
.quad .L10, cmd_date
|
|
||||||
.quad .L11, cmd_dd
|
|
||||||
.quad .L12, cmd_dirname
|
|
||||||
.quad .L13, cmd_dmesg
|
|
||||||
.quad .L14, cmd_echo
|
|
||||||
.quad .L15, cmd_exec
|
|
||||||
.quad .L16, cmd_hexdump
|
|
||||||
.quad .L17, cmd_insmod
|
|
||||||
.quad .L18, cmd_kill
|
|
||||||
.quad .L19, cmd_lbracket
|
|
||||||
.quad .L20, cmd_losetup
|
|
||||||
.quad .L21, cmd_ls
|
|
||||||
.quad .L22, cmd_mkdir
|
|
||||||
.quad .L23, cmd_mkfifo
|
|
||||||
.quad .L24, cmd_mkrd
|
|
||||||
.quad .L25, cmd_mount
|
|
||||||
.quad .L26, cmd_mv
|
|
||||||
.quad .L27, cmd_nslookup
|
|
||||||
.quad .L28, cmd_poweroff
|
|
||||||
.quad .L29, cmd_printf
|
|
||||||
.quad .L30, cmd_pwd
|
|
||||||
.quad .L31, cmd_rm
|
|
||||||
.quad .L32, cmd_rmdir
|
|
||||||
.quad .L33, cmd_rmmod
|
|
||||||
.quad .L34, cmd_set
|
|
||||||
.quad .L35, cmd_sleep
|
|
||||||
.quad .L36, cmd_source
|
|
||||||
.quad .L37, cmd_test
|
|
||||||
.quad .L38, cmd_time
|
|
||||||
.quad .L39, cmd_truncate
|
|
||||||
.quad .L40, cmd_umount
|
|
||||||
.quad .L41, cmd_unalias
|
|
||||||
.quad .L42, cmd_uname
|
|
||||||
.quad .L43, cmd_unset
|
|
||||||
.quad .L44, cmd_uptime
|
|
||||||
.quad .L45, cmd_usleep
|
|
||||||
.quad .L46, cmd_xd
|
|
||||||
.quad .L47, cmsg_append
|
|
||||||
.quad .L48, dir_allocate
|
|
||||||
.quad .L49, exec_builtin
|
|
||||||
.quad .L50, icmp_alloc
|
|
||||||
.quad .L51, icmp_chksum_iob
|
|
||||||
.quad .L52, icmp_findconn
|
|
||||||
.quad .L53, icmp_free
|
|
||||||
.quad .L54, icmp_input
|
|
||||||
.quad .L55, icmp_ioctl
|
|
||||||
.quad .L56, icmp_nextconn
|
|
||||||
.quad .L57, icmp_poll
|
|
||||||
.quad .L58, icmp_pollsetup
|
|
||||||
.quad .L59, icmp_pollteardown
|
|
||||||
.quad .L60, icmp_recvmsg
|
|
||||||
.quad .L61, icmp_reply
|
|
||||||
.quad .L62, icmp_sendmsg
|
|
||||||
.quad .L63, icmpv6_advertise
|
|
||||||
.quad .L64, icmpv6_alloc
|
|
||||||
.quad .L65, icmpv6_autoconfig
|
|
||||||
.quad .L66, icmpv6_chksum
|
|
||||||
.quad .L67, icmpv6_foreach
|
|
||||||
.quad .L68, icmpv6_free
|
|
||||||
.quad .L69, icmpv6_input
|
|
||||||
.quad .L70, icmpv6_ioctl
|
|
||||||
.quad .L71, icmpv6_linkipaddr
|
|
||||||
.quad .L72, icmpv6_neighbor
|
|
||||||
.quad .L73, icmpv6_nextconn
|
|
||||||
.quad .L74, icmpv6_notify
|
|
||||||
.quad .L75, icmpv6_poll
|
|
||||||
.quad .L76, icmpv6_pollsetup
|
|
||||||
.quad .L77, icmpv6_pollteardown
|
|
||||||
.quad .L78, icmpv6_radvertise
|
|
||||||
.quad .L79, icmpv6_recvmsg
|
|
||||||
.quad .L80, icmpv6_reply
|
|
||||||
.quad .L81, icmpv6_rnotify
|
|
||||||
.quad .L82, icmpv6_rsolicit
|
|
||||||
.quad .L83, icmpv6_rwait
|
|
||||||
.quad .L84, icmpv6_rwait_cancel
|
|
||||||
.quad .L85, icmpv6_rwait_setup
|
|
||||||
.quad .L86, icmpv6_sendmsg
|
|
||||||
.quad .L87, icmpv6_setaddresses
|
|
||||||
.quad .L88, icmpv6_solicit
|
|
||||||
.quad .L89, icmpv6_wait
|
|
||||||
.quad .L90, icmpv6_wait_cancel
|
|
||||||
.quad .L91, icmpv6_wait_setup
|
|
||||||
.quad .L92, inet_close
|
|
||||||
.quad .L93, insmod
|
|
||||||
.quad .L94, ipv4_build_header
|
|
||||||
.quad .L95, ipv4_chksum
|
|
||||||
.quad .L96, ipv4_getpeername
|
|
||||||
.quad .L97, ipv4_getsockname
|
|
||||||
.quad .L98, ipv4_getsockopt
|
|
||||||
.quad .L99, ipv4_input
|
|
||||||
.quad .L100, ipv4_setsockopt
|
|
||||||
.quad .L101, ipv4_upperlayer_chksum
|
|
||||||
.quad .L102, ipv6_build_header
|
|
||||||
.quad .L103, ipv6_getpeername
|
|
||||||
.quad .L104, ipv6_getsockname
|
|
||||||
.quad .L105, ipv6_getsockopt
|
|
||||||
.quad .L106, ipv6_input
|
|
||||||
.quad .L107, ipv6_setsockopt
|
|
||||||
.quad .L108, ipv6_upperlayer_chksum
|
|
||||||
.quad .L109, kill
|
|
||||||
.quad .L110, kthread_create
|
|
||||||
.quad .L111, loop_register
|
|
||||||
.quad .L112, losetup
|
|
||||||
.quad .L113, loteardown
|
|
||||||
.quad .L114, lstat
|
|
||||||
.quad .L115, mkrd
|
|
||||||
.quad .L116, modhandle
|
|
||||||
.quad .L117, modsym
|
|
||||||
.quad .L118, mount
|
|
||||||
.quad .L119, neighbor_add
|
|
||||||
.quad .L120, neighbor_ethernet_out
|
|
||||||
.quad .L121, neighbor_findentry
|
|
||||||
.quad .L122, neighbor_lookup
|
|
||||||
.quad .L123, neighbor_out
|
|
||||||
.quad .L124, netdown_notifier_signal
|
|
||||||
.quad .L125, oneshot_register
|
|
||||||
.quad .L126, open_blockdriver
|
|
||||||
.quad .L127, panic_notifier_call_chain
|
|
||||||
.quad .L128, poll_notify
|
|
||||||
.quad .L129, pthread_cancel
|
|
||||||
.quad .L130, pthread_completejoin
|
|
||||||
.quad .L131, pthread_createjoininfo
|
|
||||||
.quad .L132, pthread_destroyjoin
|
|
||||||
.quad .L133, pthread_detach
|
|
||||||
.quad .L134, pthread_findjoininfo
|
|
||||||
.quad .L135, pthread_mutex_inconsistent
|
|
||||||
.quad .L136, pthread_release
|
|
||||||
.quad .L137, pthread_sem_give
|
|
||||||
.quad .L138, pthread_setup_scheduler
|
|
||||||
.quad .L139, ramdisk_register
|
|
||||||
.quad .L140, reboot_notifier_call_chain
|
|
||||||
.quad .L141, recv
|
|
||||||
.quad .L142, recvmsg
|
|
||||||
.quad .L143, rmmod
|
|
||||||
.quad .L144, romfs_checkmount
|
|
||||||
.quad .L145, romfs_datastart
|
|
||||||
.quad .L146, romfs_filecacheread
|
|
||||||
.quad .L147, romfs_fileconfigure
|
|
||||||
.quad .L148, romfs_finddirentry
|
|
||||||
.quad .L149, romfs_freenode
|
|
||||||
.quad .L150, romfs_fsconfigure
|
|
||||||
.quad .L151, romfs_hwconfigure
|
|
||||||
.quad .L152, romfs_hwread
|
|
||||||
.quad .L153, romfs_img
|
|
||||||
.quad .L154, romfs_img_len
|
|
||||||
.quad .L155, romfs_parsedirentry
|
|
||||||
.quad .L156, romfs_parsefilename
|
|
||||||
.quad .L157, rtc_initialize
|
|
||||||
.quad .L158, sem_clockwait
|
|
||||||
.quad .L159, sem_destroy
|
|
||||||
.quad .L160, sem_post
|
|
||||||
.quad .L161, sem_timedwait
|
|
||||||
.quad .L162, sem_trywait
|
|
||||||
.quad .L163, sem_wait
|
|
||||||
.quad .L164, send
|
|
||||||
.quad .L165, setenv
|
|
||||||
.quad .L166, sh_main
|
|
||||||
.quad .L167, sigpending
|
|
||||||
.quad .L168, sigprocmask
|
|
||||||
.quad .L169, sigtimedwait
|
|
||||||
.quad .L170, sotest_main
|
|
||||||
.quad .L171, sync
|
|
||||||
.quad .L172, sysinfo
|
|
||||||
.quad .L173, tcpip_hdrsize
|
|
||||||
.quad .L174, tls_init_info
|
|
||||||
.quad .L175, unsetenv
|
|
||||||
.quad .L176, waitpid
|
|
||||||
.quad .L177, work_cancel
|
|
||||||
.quad .L178, work_notifier_signal
|
|
||||||
.quad .L179, work_queue
|
|
||||||
.quad .L180, work_start_highpri
|
|
||||||
.quad .L181, work_start_lowpri
|
|
||||||
.size globalTable, . - globalTable
|
|
Loading…
Reference in a new issue