This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new b5cd7c2a82 libs/libc/modlib: fix dynamic loader issues
b5cd7c2a82 is described below

commit b5cd7c2a827d8501473cf6927a083c0427e6c7e0
Author: Neale Ferguson <ne...@sinenomine.net>
AuthorDate: Fri Jul 7 09:15:59 2023 +1000

    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
---
 build-globals.sh                         |  125 ++--
 libs/libc/machine/arm/armv7-m/arch_elf.c |   10 +-
 libs/libc/modlib/modlib_armv7m_globals.S | 1119 ----------------------------
 libs/libc/modlib/modlib_globals.S        | 1184 ++----------------------------
 libs/libc/modlib/modlib_loadhdrs.c       |   71 +-
 libs/libc/modlib/modlib_verify.c         |   10 +-
 libs/libc/modlib/modlib_x32_globals.S    | 1116 ----------------------------
 libs/libc/modlib/modlib_x64_globals.S    |  565 --------------
 8 files changed, 185 insertions(+), 4015 deletions(-)

diff --git a/build-globals.sh b/build-globals.sh
index 70a19e8193..9eb1d14fc4 100755
--- a/build-globals.sh
+++ b/build-globals.sh
@@ -13,6 +13,8 @@ findEP()
        SIZE=${#SYM[@]}
        L=0
        R=$((SIZE - 1))
+       OLDL=99999999
+       OLDR=99999999
        while [ ${L} -le ${R} ]
        do
                T=$(( L + R ))
@@ -26,6 +28,11 @@ findEP()
                else
                        R=$(( M - 1 ))
                fi
+               if [ ${OLDL} -eq ${L} -a ${OLDR} -eq ${R} ]; then
+                       : return 0
+               fi
+               OLDL=${L}
+               OLDR=${R}
        done
        return 0
 }
@@ -38,30 +45,36 @@ getEP()
 {
        for ((i = 0; i < ${#OBJ[@]}; i++))
        do
-               FUNCS=`${NM} -g --defined-only ../staging/${OBJ[$i]} | awk 
'{print $3}' | sort | grep -Ev ${FILTER}`
-               FUNC=(${FUNCS})
-               for ((j = 0; j < ${#FUNC[@]}; j++))
-               do
-                       findEP ${FUNC[$j]}
-                       if [ $? -eq 1 ]; then
-                               EP[${I_EP}]=${FUNC[$j]}
-                               I_EP=$((I_EP + 1))
-                       fi
-               done
+               if [ -f staging/${OBJ[$i]} ]; then
+                       FUNCS=`${NM} -g --defined-only staging/${OBJ[$i]} 
2>/dev/null | grep "^0" | awk '{print $3}' | sort | grep -Ev ${FILTER}`
+                       FUNC=(${FUNCS})
+                       for ((j = 0; j < ${#FUNC[@]}; j++))
+                       do
+                               findEP ${FUNC[$j]}
+                               if [ $? -eq 1 ]; then
+                                       EP[${I_EP}]=${FUNC[$j]}
+                                       I_EP=$((I_EP + 1))
+                               fi
+                       done
+               fi
        done 
 }
        
 #
 # 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_|^sy
 [...]
+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_|^sy
 [...]
+
+if [ -z "${NM}" ]; then
+       NM="nm"
+fi
 
 #
 # 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})
-GLOBALS="../libs/libc/modlib/modlib_globals.S"
+GLOBALS="libs/libc/modlib/modlib_globals.S"
 I_EP=0
 
 #
@@ -80,70 +93,100 @@ EP=(${EPS})
 #
 # Generate the modlib_xxxx_globals.S file
 #
-       GLOBALS="libs/libc/modlib/modlib_${arch}_globals.S"
 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
        .macro globalEntry index, ep
-       .weak  \p
-       .quad  .L\index
-       .quad  \ep
+       WEAK    SYMBOL(\ep)
+       .quad   .l\index
+       .quad   \ep
        .endm
 # define ALIGN 8
 #else
        .macro globalEntry index, ep
-       .weak  \ep              
-       .long  .L\index
-       .long  \ep
+       WEAK    SYMBOL(\ep)             
+       .long   .l\index
+       .long   \ep
        .endm
 # define ALIGN 4
 #endif
 #ifdef __ARM_ARCH_ISA_THUMB2
 # ifdef __ARM_ARCH_7M__
-        .arch armv7e-m
+       .arch armv7e-m
 # elif defined ___ARM_ARCH 8
        .arch armv8-m.base
 #endif
 #ifdef __ARM_ASM_SYNTAX_UNIFIED__
-        .syntax unified
+       .syntax unified
 #endif
-        .thumb
+       .thumb
 #endif
-        .data
-        .align ALIGN
-       .global globalNames
+       .data
+       .align  ALIGN
+       GLOBAL  globalNames 
 
-globalNames:
+SYMBOL(globalNames):
 __EOF__
 
 for ((i = 0; i < ${#EP[@]}; i++))
 do
-       echo ".L${i}:   .string \"${EP[$i]}\"" >>${GLOBALS}
+       echo ".l${i}:   .string \"${EP[$i]}\"" >>${GLOBALS}
 done
 
 cat >>${GLOBALS} <<__EOF__
-       .size   globalNames, . - globalNames
+       SIZE    globalNames 
 
-       .align  ${ALIGN}
-       .global nGlobals
-       .type   nGlobals, "object"
-nGlobals:      
+       .align  ALIGN
+       GLOBAL  nGlobals
+SYMBOL(nGlobals):      
        .word   ${#EP[@]}
-       .size   nGlobals, . - nGlobals
+       SIZE    nGlobals
 
-       .align  ${ALIGN}
-       .global globalTable
-       .type   globalTable, "object"
-globalTable:
+       .align  ALIGN
+       GLOBAL  globalTable
+SYMBOL(globalTable):
 __EOF__
 
 for ((i = 0; i < ${#EP[@]}; i++))
 do
-       echo "  globalEntry ${i}, ${EP[$i]}" >>${GLOBALS}
+       echo "  globalEntry ${i}, ${EP[$i]}" >>${GLOBALS}
 done
 
 cat >>${GLOBALS} <<__EOF__ 
-       .size   globalTable, . - globalTable
+       SIZE    globalTable
 __EOF__
 
-done
 echo "${#EP[@]} symbols defined"
diff --git a/libs/libc/machine/arm/armv7-m/arch_elf.c 
b/libs/libc/machine/arm/armv7-m/arch_elf.c
index 737a701a08..b8b2e03af5 100644
--- a/libs/libc/machine/arm/armv7-m/arch_elf.c
+++ b/libs/libc/machine/arm/armv7-m/arch_elf.c
@@ -493,14 +493,10 @@ int up_relocate(const Elf32_Rel *rel, const Elf32_Sym 
*sym, uintptr_t addr)
       }
       break;
 
-    case R_ARM_RELATIVE :
-    case R_ARM_JUMP_SLOT :
+    case R_ARM_RELATIVE:
+    case R_ARM_JUMP_SLOT:
       {
-        binfo("Relocating: RELATIVE/JUMP_SLOT at %p value: %08lx"
-               "with %08lx\n",
-              (void *)addr, *(unsigned long *)addr,
-              (unsigned long)sym->st_value);
-        *(uint32_t *) addr = (uint32_t) sym->st_value;
+        *(uint32_t *)addr = (uint32_t)sym->st_value;
       }
       break;
 
diff --git a/libs/libc/modlib/modlib_armv7m_globals.S 
b/libs/libc/modlib/modlib_armv7m_globals.S
deleted file mode 100644
index ce24eec207..0000000000
--- a/libs/libc/modlib/modlib_armv7m_globals.S
+++ /dev/null
@@ -1,1119 +0,0 @@
-        .arch armv7e-m
-        .syntax unified
-        .thumb
-        .data
-        .align 4
-       .global globalNames
-
-globalNames:
-.L0:   .string "_ZdlPvj"
-.L1:   .string "__cos"
-.L2:   .string "__cxa_pure_virtual"
-.L3:   .string "__dso_handle"
-.L4:   .string "__dtoa_engine"
-.L5:   .string "__sin"
-.L6:   .string "__swap_uint32"
-.L7:   .string "__swap_uint64"
-.L8:   .string "__ultoa_invert"
-.L9:   .string "_exit"
-.L10:  .string "abort"
-.L11:  .string "abs"
-.L12:  .string "accept"
-.L13:  .string "access"
-.L14:  .string "acos"
-.L15:  .string "acosf"
-.L16:  .string "acosh"
-.L17:  .string "acoshf"
-.L18:  .string "acoshl"
-.L19:  .string "acosl"
-.L20:  .string "add_file_action"
-.L21:  .string "asin"
-.L22:  .string "asinf"
-.L23:  .string "asinh"
-.L24:  .string "asinhf"
-.L25:  .string "asinhl"
-.L26:  .string "asinl"
-.L27:  .string "asprintf"
-.L28:  .string "atan"
-.L29:  .string "atan2"
-.L30:  .string "atan2f"
-.L31:  .string "atan2l"
-.L32:  .string "atanf"
-.L33:  .string "atanh"
-.L34:  .string "atanhf"
-.L35:  .string "atanhl"
-.L36:  .string "atanl"
-.L37:  .string "b16atan2"
-.L38:  .string "b16cos"
-.L39:  .string "b16sin"
-.L40:  .string "basename"
-.L41:  .string "bind"
-.L42:  .string "boardctl"
-.L43:  .string "bsearch"
-.L44:  .string "cabs"
-.L45:  .string "cacheflush"
-.L46:  .string "calloc"
-.L47:  .string "cbrtf"
-.L48:  .string "ceil"
-.L49:  .string "ceilf"
-.L50:  .string "ceill"
-.L51:  .string "cfgetspeed"
-.L52:  .string "cfmakeraw"
-.L53:  .string "cfsetspeed"
-.L54:  .string "chdir"
-.L55:  .string "cimag"
-.L56:  .string "clearenv"
-.L57:  .string "clearerr"
-.L58:  .string "clock"
-.L59:  .string "close"
-.L60:  .string "closedir"
-.L61:  .string "connect"
-.L62:  .string "copysign"
-.L63:  .string "copysignf"
-.L64:  .string "copysignl"
-.L65:  .string "cos"
-.L66:  .string "cosf"
-.L67:  .string "cosh"
-.L68:  .string "coshf"
-.L69:  .string "coshl"
-.L70:  .string "cosl"
-.L71:  .string "crc16"
-.L72:  .string "crc16part"
-.L73:  .string "crc32"
-.L74:  .string "crc32part"
-.L75:  .string "crc64"
-.L76:  .string "crc64part"
-.L77:  .string "crc8"
-.L78:  .string "crc8ccitt"
-.L79:  .string "crc8part"
-.L80:  .string "creal"
-.L81:  .string "daemon"
-.L82:  .string "difftime"
-.L83:  .string "dirname"
-.L84:  .string "div"
-.L85:  .string "dlclose"
-.L86:  .string "dlerror"
-.L87:  .string "dlopen"
-.L88:  .string "dlsym"
-.L89:  .string "dlsymtab"
-.L90:  .string "dns_add_nameserver"
-.L91:  .string "dns_bind"
-.L92:  .string "dns_find_answer"
-.L93:  .string "dns_foreach_nameserver"
-.L94:  .string "dns_initialize"
-.L95:  .string "dns_notify_nameserver"
-.L96:  .string "dns_query"
-.L97:  .string "dns_register_notify"
-.L98:  .string "dns_save_answer"
-.L99:  .string "dns_semgive"
-.L100: .string "dns_semtake"
-.L101: .string "dns_unregister_notify"
-.L102: .string "dprintf"
-.L103: .string "dup"
-.L104: .string "dup2"
-.L105: .string "envpath_init"
-.L106: .string "envpath_next"
-.L107: .string "envpath_release"
-.L108: .string "erf"
-.L109: .string "erff"
-.L110: .string "erfl"
-.L111: .string "ether_ntoa"
-.L112: .string "exec"
-.L113: .string "exit"
-.L114: .string "exp"
-.L115: .string "expf"
-.L116: .string "expl"
-.L117: .string "explicit_bzero"
-.L118: .string "fabs"
-.L119: .string "fabsf"
-.L120: .string "fabsl"
-.L121: .string "fclose"
-.L122: .string "fcntl"
-.L123: .string "fdopen"
-.L124: .string "feof"
-.L125: .string "ferror"
-.L126: .string "fflush"
-.L127: .string "ffs"
-.L128: .string "ffsl"
-.L129: .string "ffsll"
-.L130: .string "fgetc"
-.L131: .string "fgetpos"
-.L132: .string "fgets"
-.L133: .string "fileno"
-.L134: .string "floor"
-.L135: .string "floorf"
-.L136: .string "floorl"
-.L137: .string "fls"
-.L138: .string "flsl"
-.L139: .string "flsll"
-.L140: .string "fma"
-.L141: .string "fmaf"
-.L142: .string "fmod"
-.L143: .string "fmodf"
-.L144: .string "fmodl"
-.L145: .string "fopen"
-.L146: .string "fprintf"
-.L147: .string "fputc"
-.L148: .string "fputs"
-.L149: .string "fread"
-.L150: .string "free"
-.L151: .string "freeaddrinfo"
-.L152: .string "freopen"
-.L153: .string "frexp"
-.L154: .string "frexpf"
-.L155: .string "frexpl"
-.L156: .string "fscanf"
-.L157: .string "fseek"
-.L158: .string "fsetpos"
-.L159: .string "fstat"
-.L160: .string "fstatfs"
-.L161: .string "fsync"
-.L162: .string "ftell"
-.L163: .string "ftruncate"
-.L164: .string "fwrite"
-.L165: .string "gai_strerror"
-.L166: .string "gamma"
-.L167: .string "getaddrinfo"
-.L168: .string "getcwd"
-.L169: .string "getenv"
-.L170: .string "gethostbyaddr"
-.L171: .string "gethostbyaddr_r"
-.L172: .string "gethostbyname"
-.L173: .string "gethostbyname_r"
-.L174: .string "gethostname"
-.L175: .string "getnameinfo"
-.L176: .string "getopt"
-.L177: .string "getoptargp"
-.L178: .string "getoptindp"
-.L179: .string "getoptoptp"
-.L180: .string "getpeername"
-.L181: .string "getpid"
-.L182: .string "getprotobyname"
-.L183: .string "getrandom"
-.L184: .string "gets"
-.L185: .string "gets_s"
-.L186: .string "getservbyname"
-.L187: .string "getservbyname_r"
-.L188: .string "getsockname"
-.L189: .string "getsockopt"
-.L190: .string "gettimeofday"
-.L191: .string "gmtime"
-.L192: .string "gmtime_r"
-.L193: .string "h_errno"
-.L194: .string "htonl"
-.L195: .string "htons"
-.L196: .string "hypot"
-.L197: .string "ilogb"
-.L198: .string "ilogbf"
-.L199: .string "imaxabs"
-.L200: .string "in6addr_any"
-.L201: .string "inet_addr"
-.L202: .string "inet_aton"
-.L203: .string "inet_ntoa"
-.L204: .string "inet_ntop"
-.L205: .string "inet_pton"
-.L206: .string "ioctl"
-.L207: .string "isatty"
-.L208: .string "itoa"
-.L209: .string "kill"
-.L210: .string "labs"
-.L211: .string "ldexp"
-.L212: .string "ldexpf"
-.L213: .string "ldexpl"
-.L214: .string "ldiv"
-.L215: .string "lgamma"
-.L216: .string "lgamma_r"
-.L217: .string "listen"
-.L218: .string "llabs"
-.L219: .string "lldiv"
-.L220: .string "localeconv"
-.L221: .string "log"
-.L222: .string "log10"
-.L223: .string "log10f"
-.L224: .string "log10l"
-.L225: .string "log2"
-.L226: .string "log2f"
-.L227: .string "log2l"
-.L228: .string "logf"
-.L229: .string "logl"
-.L230: .string "lseek"
-.L231: .string "malloc"
-.L232: .string "match"
-.L233: .string "meadow_mappings"
-.L234: .string "memalign"
-.L235: .string "memccpy"
-.L236: .string "memchr"
-.L237: .string "memcmp"
-.L238: .string "memcpy"
-.L239: .string "memmove"
-.L240: .string "memrchr"
-.L241: .string "memset"
-.L242: .string "mkdir"
-.L243: .string "mkfifo"
-.L244: .string "mkfifo2"
-.L245: .string "mkstemp"
-.L246: .string "mktemp"
-.L247: .string "mktime"
-.L248: .string "mmap"
-.L249: .string "modf"
-.L250: .string "modff"
-.L251: .string "modfl"
-.L252: .string "mono_main"
-.L253: .string "mono_should_run"
-.L254: .string "mount"
-.L255: .string "munmap"
-.L256: .string "nanosleep"
-.L257: .string "nrand"
-.L258: .string "ntohl"
-.L259: .string "ntohs"
-.L260: .string "open"
-.L261: .string "opendir"
-.L262: .string "optarg"
-.L263: .string "optind"
-.L264: .string "optopt"
-.L265: .string "perror"
-.L266: .string "pipe"
-.L267: .string "pipe2"
-.L268: .string "poll"
-.L269: .string "posix_spawnattr_dump"
-.L270: .string "posix_spawnattr_getflags"
-.L271: .string "posix_spawnattr_getschedparam"
-.L272: .string "posix_spawnattr_getschedpolicy"
-.L273: .string "posix_spawnattr_getsigmask"
-.L274: .string "posix_spawnattr_init"
-.L275: .string "posix_spawnattr_setflags"
-.L276: .string "posix_spawnattr_setschedparam"
-.L277: .string "posix_spawnattr_setschedpolicy"
-.L278: .string "posix_spawnattr_setsigmask"
-.L279: .string "pow"
-.L280: .string "powf"
-.L281: .string "powl"
-.L282: .string "ppoll"
-.L283: .string "prctl"
-.L284: .string "pread"
-.L285: .string "printf"
-.L286: .string "pselect"
-.L287: .string "psiginfo"
-.L288: .string "psignal"
-.L289: .string "pthread_attr_destroy"
-.L290: .string "pthread_attr_getinheritsched"
-.L291: .string "pthread_attr_getschedparam"
-.L292: .string "pthread_attr_getschedpolicy"
-.L293: .string "pthread_attr_getstack"
-.L294: .string "pthread_attr_getstacksize"
-.L295: .string "pthread_attr_init"
-.L296: .string "pthread_attr_setinheritsched"
-.L297: .string "pthread_attr_setschedparam"
-.L298: .string "pthread_attr_setschedpolicy"
-.L299: .string "pthread_attr_setstack"
-.L300: .string "pthread_attr_setstacksize"
-.L301: .string "pthread_barrier_destroy"
-.L302: .string "pthread_barrier_init"
-.L303: .string "pthread_barrier_wait"
-.L304: .string "pthread_barrierattr_destroy"
-.L305: .string "pthread_barrierattr_getpshared"
-.L306: .string "pthread_barrierattr_init"
-.L307: .string "pthread_barrierattr_setpshared"
-.L308: .string "pthread_cancel"
-.L309: .string "pthread_cleanup_pop"
-.L310: .string "pthread_cleanup_push"
-.L311: .string "pthread_cond_broadcast"
-.L312: .string "pthread_cond_destroy"
-.L313: .string "pthread_cond_init"
-.L314: .string "pthread_cond_signal"
-.L315: .string "pthread_cond_timedwait"
-.L316: .string "pthread_cond_wait"
-.L317: .string "pthread_condattr_destroy"
-.L318: .string "pthread_condattr_init"
-.L319: .string "pthread_create"
-.L320: .string "pthread_detach"
-.L321: .string "pthread_exit"
-.L322: .string "pthread_get_stackaddr_np"
-.L323: .string "pthread_get_stacksize_np"
-.L324: .string "pthread_getschedparam"
-.L325: .string "pthread_getspecific"
-.L326: .string "pthread_join"
-.L327: .string "pthread_key_create"
-.L328: .string "pthread_key_delete"
-.L329: .string "pthread_kill"
-.L330: .string "pthread_mutex_consistent"
-.L331: .string "pthread_mutex_destroy"
-.L332: .string "pthread_mutex_init"
-.L333: .string "pthread_mutex_lock"
-.L334: .string "pthread_mutex_timedlock"
-.L335: .string "pthread_mutex_trylock"
-.L336: .string "pthread_mutex_unlock"
-.L337: .string "pthread_mutexattr_destroy"
-.L338: .string "pthread_mutexattr_getprotocol"
-.L339: .string "pthread_mutexattr_getpshared"
-.L340: .string "pthread_mutexattr_getrobust"
-.L341: .string "pthread_mutexattr_gettype"
-.L342: .string "pthread_mutexattr_init"
-.L343: .string "pthread_mutexattr_setprotocol"
-.L344: .string "pthread_mutexattr_setpshared"
-.L345: .string "pthread_mutexattr_setrobust"
-.L346: .string "pthread_mutexattr_settype"
-.L347: .string "pthread_once"
-.L348: .string "pthread_rwlock_destroy"
-.L349: .string "pthread_rwlock_init"
-.L350: .string "pthread_rwlock_rdlock"
-.L351: .string "pthread_rwlock_timedrdlock"
-.L352: .string "pthread_rwlock_timedwrlock"
-.L353: .string "pthread_rwlock_tryrdlock"
-.L354: .string "pthread_rwlock_trywrlock"
-.L355: .string "pthread_rwlock_unlock"
-.L356: .string "pthread_rwlock_wrlock"
-.L357: .string "pthread_setcancelstate"
-.L358: .string "pthread_setcanceltype"
-.L359: .string "pthread_setschedparam"
-.L360: .string "pthread_setschedprio"
-.L361: .string "pthread_setspecific"
-.L362: .string "pthread_sigmask"
-.L363: .string "pthread_startup"
-.L364: .string "pthread_testcancel"
-.L365: .string "pthread_yield"
-.L366: .string "putenv"
-.L367: .string "puts"
-.L368: .string "pwrite"
-.L369: .string "qsort"
-.L370: .string "raise"
-.L371: .string "rand"
-.L372: .string "random"
-.L373: .string "read"
-.L374: .string "readdir"
-.L375: .string "readdir_r"
-.L376: .string "readv"
-.L377: .string "realloc"
-.L378: .string "recv"
-.L379: .string "recvfrom"
-.L380: .string "recvmsg"
-.L381: .string "remove"
-.L382: .string "rename"
-.L383: .string "rewinddir"
-.L384: .string "rint"
-.L385: .string "rintf"
-.L386: .string "rintl"
-.L387: .string "rmdir"
-.L388: .string "round"
-.L389: .string "roundf"
-.L390: .string "roundl"
-.L391: .string "scalbn"
-.L392: .string "scalbnf"
-.L393: .string "scanf"
-.L394: .string "seekdir"
-.L395: .string "select"
-.L396: .string "sem_destroy"
-.L397: .string "sem_getprotocol"
-.L398: .string "sem_getvalue"
-.L399: .string "sem_init"
-.L400: .string "sem_post"
-.L401: .string "sem_setprotocol"
-.L402: .string "sem_timedwait"
-.L403: .string "sem_trywait"
-.L404: .string "sem_wait"
-.L405: .string "send"
-.L406: .string "sendfile"
-.L407: .string "sendmsg"
-.L408: .string "sendto"
-.L409: .string "set_errno"
-.L410: .string "setbuf"
-.L411: .string "setenv"
-.L412: .string "sethostname"
-.L413: .string "setlocale"
-.L414: .string "setlogmask"
-.L415: .string "setsockopt"
-.L416: .string "settimeofday"
-.L417: .string "setvbuf"
-.L418: .string "shutdown"
-.L419: .string "sigaction"
-.L420: .string "sigaddset"
-.L421: .string "sigdelset"
-.L422: .string "sigemptyset"
-.L423: .string "sigfillset"
-.L424: .string "sighold"
-.L425: .string "sigignore"
-.L426: .string "sigismember"
-.L427: .string "signal"
-.L428: .string "sigpause"
-.L429: .string "sigpending"
-.L430: .string "sigprocmask"
-.L431: .string "sigqueue"
-.L432: .string "sigrelse"
-.L433: .string "sigset"
-.L434: .string "sigsuspend"
-.L435: .string "sigtimedwait"
-.L436: .string "sigwait"
-.L437: .string "sigwaitinfo"
-.L438: .string "sin"
-.L439: .string "sinf"
-.L440: .string "sinh"
-.L441: .string "sinhf"
-.L442: .string "sinhl"
-.L443: .string "sinl"
-.L444: .string "sleep"
-.L445: .string "snprintf"
-.L446: .string "socket"
-.L447: .string "sprintf"
-.L448: .string "sqrt"
-.L449: .string "sqrtf"
-.L450: .string "sqrtl"
-.L451: .string "srand"
-.L452: .string "sscanf"
-.L453: .string "stat"
-.L454: .string "statfs"
-.L455: .string "stpcpy"
-.L456: .string "stpncpy"
-.L457: .string "strcasecmp"
-.L458: .string "strcasestr"
-.L459: .string "strcat"
-.L460: .string "strchr"
-.L461: .string "strcmp"
-.L462: .string "strcoll"
-.L463: .string "strcpy"
-.L464: .string "strcspn"
-.L465: .string "strdup"
-.L466: .string "stream_semgive"
-.L467: .string "stream_semtake"
-.L468: .string "strerror"
-.L469: .string "strerror_r"
-.L470: .string "strftime"
-.L471: .string "strlen"
-.L472: .string "strncasecmp"
-.L473: .string "strncat"
-.L474: .string "strncmp"
-.L475: .string "strncpy"
-.L476: .string "strndup"
-.L477: .string "strnlen"
-.L478: .string "strpbrk"
-.L479: .string "strrchr"
-.L480: .string "strsep"
-.L481: .string "strsignal"
-.L482: .string "strspn"
-.L483: .string "strstr"
-.L484: .string "strtod"
-.L485: .string "strtof"
-.L486: .string "strtoimax"
-.L487: .string "strtok"
-.L488: .string "strtok_r"
-.L489: .string "strtol"
-.L490: .string "strtold"
-.L491: .string "strtoll"
-.L492: .string "strtoul"
-.L493: .string "strtoull"
-.L494: .string "strtoumax"
-.L495: .string "strxfrm"
-.L496: .string "swab"
-.L497: .string "sysconf"
-.L498: .string "syslog"
-.L499: .string "tan"
-.L500: .string "tanf"
-.L501: .string "tanh"
-.L502: .string "tanhf"
-.L503: .string "tanhl"
-.L504: .string "tanl"
-.L505: .string "tcdrain"
-.L506: .string "tcflow"
-.L507: .string "tcflush"
-.L508: .string "tcgetattr"
-.L509: .string "tcsetattr"
-.L510: .string "tea_decrypt"
-.L511: .string "tea_encrypt"
-.L512: .string "telldir"
-.L513: .string "tempnam"
-.L514: .string "tgamma"
-.L515: .string "time"
-.L516: .string "tmpnam"
-.L517: .string "trunc"
-.L518: .string "truncate"
-.L519: .string "truncf"
-.L520: .string "truncl"
-.L521: .string "uadd32x64"
-.L522: .string "uadd64"
-.L523: .string "ub32sqrtub16"
-.L524: .string "umul32"
-.L525: .string "umul32x64"
-.L526: .string "umul64"
-.L527: .string "uname"
-.L528: .string "ungetc"
-.L529: .string "unlink"
-.L530: .string "unsetenv"
-.L531: .string "usleep"
-.L532: .string "usub64"
-.L533: .string "usub64x32"
-.L534: .string "vasprintf"
-.L535: .string "vdprintf"
-.L536: .string "vfork"
-.L537: .string "vfprintf"
-.L538: .string "vfscanf"
-.L539: .string "vprintf"
-.L540: .string "vsnprintf"
-.L541: .string "vsprintf"
-.L542: .string "vsscanf"
-.L543: .string "vsyslog"
-.L544: .string "waitpid"
-.L545: .string "write"
-.L546: .string "writev"
-.L547: .string "xorshift128"
-.L548: .string "zalloc"
-       .size   globalNames, . - globalNames
-
-       .align  4
-       .global nGlobals
-       .type   nGlobals, "object"
-nGlobals:      
-       .word   549
-       .size   nGlobals, . - nGlobals
-
-       .global globalTable
-       .type   globalTable, "object"
-globalTable:
-       .word   .L0, _ZdlPvj
-       .word   .L1, __cos
-       .word   .L2, __cxa_pure_virtual
-       .word   .L3, __dso_handle
-       .word   .L4, __dtoa_engine
-       .word   .L5, __sin
-       .word   .L6, __swap_uint32
-       .word   .L7, __swap_uint64
-       .word   .L8, __ultoa_invert
-       .word   .L9, _exit
-       .word   .L10, abort
-       .word   .L11, abs
-       .word   .L12, accept
-       .word   .L13, access
-       .word   .L14, acos
-       .word   .L15, acosf
-       .word   .L16, acosh
-       .word   .L17, acoshf
-       .word   .L18, acoshl
-       .word   .L19, acosl
-       .word   .L20, add_file_action
-       .word   .L21, asin
-       .word   .L22, asinf
-       .word   .L23, asinh
-       .word   .L24, asinhf
-       .word   .L25, asinhl
-       .word   .L26, asinl
-       .word   .L27, asprintf
-       .word   .L28, atan
-       .word   .L29, atan2
-       .word   .L30, atan2f
-       .word   .L31, atan2l
-       .word   .L32, atanf
-       .word   .L33, atanh
-       .word   .L34, atanhf
-       .word   .L35, atanhl
-       .word   .L36, atanl
-       .word   .L37, b16atan2
-       .word   .L38, b16cos
-       .word   .L39, b16sin
-       .word   .L40, basename
-       .word   .L41, bind
-       .word   .L42, boardctl
-       .word   .L43, bsearch
-       .word   .L44, cabs
-       .word   .L45, cacheflush
-       .word   .L46, calloc
-       .word   .L47, cbrtf
-       .word   .L48, ceil
-       .word   .L49, ceilf
-       .word   .L50, ceill
-       .word   .L51, cfgetspeed
-       .word   .L52, cfmakeraw
-       .word   .L53, cfsetspeed
-       .word   .L54, chdir
-       .word   .L55, cimag
-       .word   .L56, clearenv
-       .word   .L57, clearerr
-       .word   .L58, clock
-       .word   .L59, close
-       .word   .L60, closedir
-       .word   .L61, connect
-       .word   .L62, copysign
-       .word   .L63, copysignf
-       .word   .L64, copysignl
-       .word   .L65, cos
-       .word   .L66, cosf
-       .word   .L67, cosh
-       .word   .L68, coshf
-       .word   .L69, coshl
-       .word   .L70, cosl
-       .word   .L71, crc16
-       .word   .L72, crc16part
-       .word   .L73, crc32
-       .word   .L74, crc32part
-       .word   .L75, crc64
-       .word   .L76, crc64part
-       .word   .L77, crc8
-       .word   .L78, crc8ccitt
-       .word   .L79, crc8part
-       .word   .L80, creal
-       .word   .L81, daemon
-       .word   .L82, difftime
-       .word   .L83, dirname
-       .word   .L84, div
-       .word   .L85, dlclose
-       .word   .L86, dlerror
-       .word   .L87, dlopen
-       .word   .L88, dlsym
-       .word   .L89, dlsymtab
-       .word   .L90, dns_add_nameserver
-       .word   .L91, dns_bind
-       .word   .L92, dns_find_answer
-       .word   .L93, dns_foreach_nameserver
-       .word   .L94, dns_initialize
-       .word   .L95, dns_notify_nameserver
-       .word   .L96, dns_query
-       .word   .L97, dns_register_notify
-       .word   .L98, dns_save_answer
-       .word   .L99, dns_semgive
-       .word   .L100, dns_semtake
-       .word   .L101, dns_unregister_notify
-       .word   .L102, dprintf
-       .word   .L103, dup
-       .word   .L104, dup2
-       .word   .L105, envpath_init
-       .word   .L106, envpath_next
-       .word   .L107, envpath_release
-       .word   .L108, erf
-       .word   .L109, erff
-       .word   .L110, erfl
-       .word   .L111, ether_ntoa
-       .word   .L112, exec
-       .word   .L113, exit
-       .word   .L114, exp
-       .word   .L115, expf
-       .word   .L116, expl
-       .word   .L117, explicit_bzero
-       .word   .L118, fabs
-       .word   .L119, fabsf
-       .word   .L120, fabsl
-       .word   .L121, fclose
-       .word   .L122, fcntl
-       .word   .L123, fdopen
-       .word   .L124, feof
-       .word   .L125, ferror
-       .word   .L126, fflush
-       .word   .L127, ffs
-       .word   .L128, ffsl
-       .word   .L129, ffsll
-       .word   .L130, fgetc
-       .word   .L131, fgetpos
-       .word   .L132, fgets
-       .word   .L133, fileno
-       .word   .L134, floor
-       .word   .L135, floorf
-       .word   .L136, floorl
-       .word   .L137, fls
-       .word   .L138, flsl
-       .word   .L139, flsll
-       .word   .L140, fma
-       .word   .L141, fmaf
-       .word   .L142, fmod
-       .word   .L143, fmodf
-       .word   .L144, fmodl
-       .word   .L145, fopen
-       .word   .L146, fprintf
-       .word   .L147, fputc
-       .word   .L148, fputs
-       .word   .L149, fread
-       .word   .L150, free
-       .word   .L151, freeaddrinfo
-       .word   .L152, freopen
-       .word   .L153, frexp
-       .word   .L154, frexpf
-       .word   .L155, frexpl
-       .word   .L156, fscanf
-       .word   .L157, fseek
-       .word   .L158, fsetpos
-       .word   .L159, fstat
-       .word   .L160, fstatfs
-       .word   .L161, fsync
-       .word   .L162, ftell
-       .word   .L163, ftruncate
-       .word   .L164, fwrite
-       .word   .L165, gai_strerror
-       .word   .L166, gamma
-       .word   .L167, getaddrinfo
-       .word   .L168, getcwd
-       .word   .L169, getenv
-       .word   .L170, gethostbyaddr
-       .word   .L171, gethostbyaddr_r
-       .word   .L172, gethostbyname
-       .word   .L173, gethostbyname_r
-       .word   .L174, gethostname
-       .word   .L175, getnameinfo
-       .word   .L176, getopt
-       .word   .L177, getoptargp
-       .word   .L178, getoptindp
-       .word   .L179, getoptoptp
-       .word   .L180, getpeername
-       .word   .L181, getpid
-       .word   .L182, getprotobyname
-       .word   .L183, getrandom
-       .word   .L184, gets
-       .word   .L185, gets_s
-       .word   .L186, getservbyname
-       .word   .L187, getservbyname_r
-       .word   .L188, getsockname
-       .word   .L189, getsockopt
-       .word   .L190, gettimeofday
-       .word   .L191, gmtime
-       .word   .L192, gmtime_r
-       .word   .L193, h_errno
-       .word   .L194, htonl
-       .word   .L195, htons
-       .word   .L196, hypot
-       .word   .L197, ilogb
-       .word   .L198, ilogbf
-       .word   .L199, imaxabs
-       .word   .L200, in6addr_any
-       .word   .L201, inet_addr
-       .word   .L202, inet_aton
-       .word   .L203, inet_ntoa
-       .word   .L204, inet_ntop
-       .word   .L205, inet_pton
-       .word   .L206, ioctl
-       .word   .L207, isatty
-       .word   .L208, itoa
-       .word   .L209, kill
-       .word   .L210, labs
-       .word   .L211, ldexp
-       .word   .L212, ldexpf
-       .word   .L213, ldexpl
-       .word   .L214, ldiv
-       .word   .L215, lgamma
-       .word   .L216, lgamma_r
-       .word   .L217, listen
-       .word   .L218, llabs
-       .word   .L219, lldiv
-       .word   .L220, localeconv
-       .word   .L221, log
-       .word   .L222, log10
-       .word   .L223, log10f
-       .word   .L224, log10l
-       .word   .L225, log2
-       .word   .L226, log2f
-       .word   .L227, log2l
-       .word   .L228, logf
-       .word   .L229, logl
-       .word   .L230, lseek
-       .word   .L231, malloc
-       .word   .L232, match
-       .word   .L233, meadow_mappings
-       .word   .L234, memalign
-       .word   .L235, memccpy
-       .word   .L236, memchr
-       .word   .L237, memcmp
-       .word   .L238, memcpy
-       .word   .L239, memmove
-       .word   .L240, memrchr
-       .word   .L241, memset
-       .word   .L242, mkdir
-       .word   .L243, mkfifo
-       .word   .L244, mkfifo2
-       .word   .L245, mkstemp
-       .word   .L246, mktemp
-       .word   .L247, mktime
-       .word   .L248, mmap
-       .word   .L249, modf
-       .word   .L250, modff
-       .word   .L251, modfl
-       .word   .L252, mono_main
-       .word   .L253, mono_should_run
-       .word   .L254, mount
-       .word   .L255, munmap
-       .word   .L256, nanosleep
-       .word   .L257, nrand
-       .word   .L258, ntohl
-       .word   .L259, ntohs
-       .word   .L260, open
-       .word   .L261, opendir
-       .word   .L262, optarg
-       .word   .L263, optind
-       .word   .L264, optopt
-       .word   .L265, perror
-       .word   .L266, pipe
-       .word   .L267, pipe2
-       .word   .L268, poll
-       .word   .L269, posix_spawnattr_dump
-       .word   .L270, posix_spawnattr_getflags
-       .word   .L271, posix_spawnattr_getschedparam
-       .word   .L272, posix_spawnattr_getschedpolicy
-       .word   .L273, posix_spawnattr_getsigmask
-       .word   .L274, posix_spawnattr_init
-       .word   .L275, posix_spawnattr_setflags
-       .word   .L276, posix_spawnattr_setschedparam
-       .word   .L277, posix_spawnattr_setschedpolicy
-       .word   .L278, posix_spawnattr_setsigmask
-       .word   .L279, pow
-       .word   .L280, powf
-       .word   .L281, powl
-       .word   .L282, ppoll
-       .word   .L283, prctl
-       .word   .L284, pread
-       .word   .L285, printf
-       .word   .L286, pselect
-       .word   .L287, psiginfo
-       .word   .L288, psignal
-       .word   .L289, pthread_attr_destroy
-       .word   .L290, pthread_attr_getinheritsched
-       .word   .L291, pthread_attr_getschedparam
-       .word   .L292, pthread_attr_getschedpolicy
-       .word   .L293, pthread_attr_getstack
-       .word   .L294, pthread_attr_getstacksize
-       .word   .L295, pthread_attr_init
-       .word   .L296, pthread_attr_setinheritsched
-       .word   .L297, pthread_attr_setschedparam
-       .word   .L298, pthread_attr_setschedpolicy
-       .word   .L299, pthread_attr_setstack
-       .word   .L300, pthread_attr_setstacksize
-       .word   .L301, pthread_barrier_destroy
-       .word   .L302, pthread_barrier_init
-       .word   .L303, pthread_barrier_wait
-       .word   .L304, pthread_barrierattr_destroy
-       .word   .L305, pthread_barrierattr_getpshared
-       .word   .L306, pthread_barrierattr_init
-       .word   .L307, pthread_barrierattr_setpshared
-       .word   .L308, pthread_cancel
-       .word   .L309, pthread_cleanup_pop
-       .word   .L310, pthread_cleanup_push
-       .word   .L311, pthread_cond_broadcast
-       .word   .L312, pthread_cond_destroy
-       .word   .L313, pthread_cond_init
-       .word   .L314, pthread_cond_signal
-       .word   .L315, pthread_cond_timedwait
-       .word   .L316, pthread_cond_wait
-       .word   .L317, pthread_condattr_destroy
-       .word   .L318, pthread_condattr_init
-       .word   .L319, pthread_create
-       .word   .L320, pthread_detach
-       .word   .L321, pthread_exit
-       .word   .L322, pthread_get_stackaddr_np
-       .word   .L323, pthread_get_stacksize_np
-       .word   .L324, pthread_getschedparam
-       .word   .L325, pthread_getspecific
-       .word   .L326, pthread_join
-       .word   .L327, pthread_key_create
-       .word   .L328, pthread_key_delete
-       .word   .L329, pthread_kill
-       .word   .L330, pthread_mutex_consistent
-       .word   .L331, pthread_mutex_destroy
-       .word   .L332, pthread_mutex_init
-       .word   .L333, pthread_mutex_lock
-       .word   .L334, pthread_mutex_timedlock
-       .word   .L335, pthread_mutex_trylock
-       .word   .L336, pthread_mutex_unlock
-       .word   .L337, pthread_mutexattr_destroy
-       .word   .L338, pthread_mutexattr_getprotocol
-       .word   .L339, pthread_mutexattr_getpshared
-       .word   .L340, pthread_mutexattr_getrobust
-       .word   .L341, pthread_mutexattr_gettype
-       .word   .L342, pthread_mutexattr_init
-       .word   .L343, pthread_mutexattr_setprotocol
-       .word   .L344, pthread_mutexattr_setpshared
-       .word   .L345, pthread_mutexattr_setrobust
-       .word   .L346, pthread_mutexattr_settype
-       .word   .L347, pthread_once
-       .word   .L348, pthread_rwlock_destroy
-       .word   .L349, pthread_rwlock_init
-       .word   .L350, pthread_rwlock_rdlock
-       .word   .L351, pthread_rwlock_timedrdlock
-       .word   .L352, pthread_rwlock_timedwrlock
-       .word   .L353, pthread_rwlock_tryrdlock
-       .word   .L354, pthread_rwlock_trywrlock
-       .word   .L355, pthread_rwlock_unlock
-       .word   .L356, pthread_rwlock_wrlock
-       .word   .L357, pthread_setcancelstate
-       .word   .L358, pthread_setcanceltype
-       .word   .L359, pthread_setschedparam
-       .word   .L360, pthread_setschedprio
-       .word   .L361, pthread_setspecific
-       .word   .L362, pthread_sigmask
-       .word   .L363, pthread_startup
-       .word   .L364, pthread_testcancel
-       .word   .L365, pthread_yield
-       .word   .L366, putenv
-       .word   .L367, puts
-       .word   .L368, pwrite
-       .word   .L369, qsort
-       .word   .L370, raise
-       .word   .L371, rand
-       .word   .L372, random
-       .word   .L373, read
-       .word   .L374, readdir
-       .word   .L375, readdir_r
-       .word   .L376, readv
-       .word   .L377, realloc
-       .word   .L378, recv
-       .word   .L379, recvfrom
-       .word   .L380, recvmsg
-       .word   .L381, remove
-       .word   .L382, rename
-       .word   .L383, rewinddir
-       .word   .L384, rint
-       .word   .L385, rintf
-       .word   .L386, rintl
-       .word   .L387, rmdir
-       .word   .L388, round
-       .word   .L389, roundf
-       .word   .L390, roundl
-       .word   .L391, scalbn
-       .word   .L392, scalbnf
-       .word   .L393, scanf
-       .word   .L394, seekdir
-       .word   .L395, select
-       .word   .L396, sem_destroy
-       .word   .L397, sem_getprotocol
-       .word   .L398, sem_getvalue
-       .word   .L399, sem_init
-       .word   .L400, sem_post
-       .word   .L401, sem_setprotocol
-       .word   .L402, sem_timedwait
-       .word   .L403, sem_trywait
-       .word   .L404, sem_wait
-       .word   .L405, send
-       .word   .L406, sendfile
-       .word   .L407, sendmsg
-       .word   .L408, sendto
-       .word   .L409, set_errno
-       .word   .L410, setbuf
-       .word   .L411, setenv
-       .word   .L412, sethostname
-       .word   .L413, setlocale
-       .word   .L414, setlogmask
-       .word   .L415, setsockopt
-       .word   .L416, settimeofday
-       .word   .L417, setvbuf
-       .word   .L418, shutdown
-       .word   .L419, sigaction
-       .word   .L420, sigaddset
-       .word   .L421, sigdelset
-       .word   .L422, sigemptyset
-       .word   .L423, sigfillset
-       .word   .L424, sighold
-       .word   .L425, sigignore
-       .word   .L426, sigismember
-       .word   .L427, signal
-       .word   .L428, sigpause
-       .word   .L429, sigpending
-       .word   .L430, sigprocmask
-       .word   .L431, sigqueue
-       .word   .L432, sigrelse
-       .word   .L433, sigset
-       .word   .L434, sigsuspend
-       .word   .L435, sigtimedwait
-       .word   .L436, sigwait
-       .word   .L437, sigwaitinfo
-       .word   .L438, sin
-       .word   .L439, sinf
-       .word   .L440, sinh
-       .word   .L441, sinhf
-       .word   .L442, sinhl
-       .word   .L443, sinl
-       .word   .L444, sleep
-       .word   .L445, snprintf
-       .word   .L446, socket
-       .word   .L447, sprintf
-       .word   .L448, sqrt
-       .word   .L449, sqrtf
-       .word   .L450, sqrtl
-       .word   .L451, srand
-       .word   .L452, sscanf
-       .word   .L453, stat
-       .word   .L454, statfs
-       .word   .L455, stpcpy
-       .word   .L456, stpncpy
-       .word   .L457, strcasecmp
-       .word   .L458, strcasestr
-       .word   .L459, strcat
-       .word   .L460, strchr
-       .word   .L461, strcmp
-       .word   .L462, strcoll
-       .word   .L463, strcpy
-       .word   .L464, strcspn
-       .word   .L465, strdup
-       .word   .L466, stream_semgive
-       .word   .L467, stream_semtake
-       .word   .L468, strerror
-       .word   .L469, strerror_r
-       .word   .L470, strftime
-       .word   .L471, strlen
-       .word   .L472, strncasecmp
-       .word   .L473, strncat
-       .word   .L474, strncmp
-       .word   .L475, strncpy
-       .word   .L476, strndup
-       .word   .L477, strnlen
-       .word   .L478, strpbrk
-       .word   .L479, strrchr
-       .word   .L480, strsep
-       .word   .L481, strsignal
-       .word   .L482, strspn
-       .word   .L483, strstr
-       .word   .L484, strtod
-       .word   .L485, strtof
-       .word   .L486, strtoimax
-       .word   .L487, strtok
-       .word   .L488, strtok_r
-       .word   .L489, strtol
-       .word   .L490, strtold
-       .word   .L491, strtoll
-       .word   .L492, strtoul
-       .word   .L493, strtoull
-       .word   .L494, strtoumax
-       .word   .L495, strxfrm
-       .word   .L496, swab
-       .word   .L497, sysconf
-       .word   .L498, syslog
-       .word   .L499, tan
-       .word   .L500, tanf
-       .word   .L501, tanh
-       .word   .L502, tanhf
-       .word   .L503, tanhl
-       .word   .L504, tanl
-       .word   .L505, tcdrain
-       .word   .L506, tcflow
-       .word   .L507, tcflush
-       .word   .L508, tcgetattr
-       .word   .L509, tcsetattr
-       .word   .L510, tea_decrypt
-       .word   .L511, tea_encrypt
-       .word   .L512, telldir
-       .word   .L513, tempnam
-       .word   .L514, tgamma
-       .word   .L515, time
-       .word   .L516, tmpnam
-       .word   .L517, trunc
-       .word   .L518, truncate
-       .word   .L519, truncf
-       .word   .L520, truncl
-       .word   .L521, uadd32x64
-       .word   .L522, uadd64
-       .word   .L523, ub32sqrtub16
-       .word   .L524, umul32
-       .word   .L525, umul32x64
-       .word   .L526, umul64
-       .word   .L527, uname
-       .word   .L528, ungetc
-       .word   .L529, unlink
-       .word   .L530, unsetenv
-       .word   .L531, usleep
-       .word   .L532, usub64
-       .word   .L533, usub64x32
-       .word   .L534, vasprintf
-       .word   .L535, vdprintf
-       .word   .L536, vfork
-       .word   .L537, vfprintf
-       .word   .L538, vfscanf
-       .word   .L539, vprintf
-       .word   .L540, vsnprintf
-       .word   .L541, vsprintf
-       .word   .L542, vsscanf
-       .word   .L543, vsyslog
-       .word   .L544, waitpid
-       .word   .L545, write
-       .word   .L546, writev
-       .word   .L547, xorshift128
-       .word   .L548, zalloc
-       .size   globalTable, . - globalTable
diff --git a/libs/libc/modlib/modlib_globals.S 
b/libs/libc/modlib/modlib_globals.S
index 768cafa2f0..f365046638 100644
--- a/libs/libc/modlib/modlib_globals.S
+++ b/libs/libc/modlib/modlib_globals.S
@@ -1,1145 +1,77 @@
+#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
        .macro globalEntry index, ep
-       .weak  \ep
-       .quad  .L\index
-       .quad  \ep
+       WEAK    SYMBOL(\ep)
+       .quad   .l\index
+       .quad   \ep
        .endm
 # define ALIGN 8
 #else
        .macro globalEntry index, ep
-       .weak  \ep              
-       .long  .L\index
-       .long  \ep
+       WEAK    SYMBOL(\ep)             
+       .long   .l\index
+       .long   \ep
        .endm
 # define ALIGN 4
 #endif
-
 #ifdef __ARM_ARCH_ISA_THUMB2
 # ifdef __ARM_ARCH_7M__
-        .arch armv7e-m
+       .arch armv7e-m
 # elif defined ___ARM_ARCH 8
        .arch armv8-m.base
-# endif
-# ifdef __ARM_ASM_SYNTAX_UNIFIED__
-        .syntax unified
-# endif
-        .thumb
 #endif
+#ifdef __ARM_ASM_SYNTAX_UNIFIED__
+       .syntax unified
+#endif
+       .thumb
+#endif
+       .data
+       .align  ALIGN
+       GLOBAL  globalNames
 
-        .data
-        .align ALIGN
-       .global globalNames
-
-globalNames:
-.L0:   .string "_ZdlPvj"
-.L1:   .string "__cos"
-.L2:   .string "__cxa_pure_virtual"
-.L3:   .string "__dso_handle"
-.L4:   .string "__dtoa_engine"
-.L5:   .string "__sin"
-.L6:   .string "__swap_uint32"
-.L7:   .string "__swap_uint64"
-.L8:   .string "__ultoa_invert"
-.L9:   .string "_exit"
-.L10:  .string "abort"
-.L11:  .string "abs"
-.L12:  .string "accept"
-.L13:  .string "access"
-.L14:  .string "acos"
-.L15:  .string "acosf"
-.L16:  .string "acosh"
-.L17:  .string "acoshf"
-.L18:  .string "acoshl"
-.L19:  .string "acosl"
-.L20:  .string "add_file_action"
-.L21:  .string "asin"
-.L22:  .string "asinf"
-.L23:  .string "asinh"
-.L24:  .string "asinhf"
-.L25:  .string "asinhl"
-.L26:  .string "asinl"
-.L27:  .string "asprintf"
-.L28:  .string "atan"
-.L29:  .string "atan2"
-.L30:  .string "atan2f"
-.L31:  .string "atan2l"
-.L32:  .string "atanf"
-.L33:  .string "atanh"
-.L34:  .string "atanhf"
-.L35:  .string "atanhl"
-.L36:  .string "atanl"
-.L37:  .string "b16atan2"
-.L38:  .string "b16cos"
-.L39:  .string "b16sin"
-.L40:  .string "basename"
-.L41:  .string "bind"
-.L42:  .string "boardctl"
-.L43:  .string "bsearch"
-.L44:  .string "cabs"
-.L45:  .string "cacheflush"
-.L46:  .string "calloc"
-.L47:  .string "cbrtf"
-.L48:  .string "ceil"
-.L49:  .string "ceilf"
-.L50:  .string "ceill"
-.L51:  .string "cfgetspeed"
-.L52:  .string "cfmakeraw"
-.L53:  .string "cfsetspeed"
-.L54:  .string "chdir"
-.L55:  .string "cimag"
-.L56:  .string "clearenv"
-.L57:  .string "clearerr"
-.L58:  .string "clock"
-.L59:  .string "close"
-.L60:  .string "closedir"
-.L61:  .string "connect"
-.L62:  .string "copysign"
-.L63:  .string "copysignf"
-.L64:  .string "copysignl"
-.L65:  .string "cos"
-.L66:  .string "cosf"
-.L67:  .string "cosh"
-.L68:  .string "coshf"
-.L69:  .string "coshl"
-.L70:  .string "cosl"
-.L71:  .string "crc16"
-.L72:  .string "crc16part"
-.L73:  .string "crc32"
-.L74:  .string "crc32part"
-.L75:  .string "crc64"
-.L76:  .string "crc64part"
-.L77:  .string "crc8"
-.L78:  .string "crc8ccitt"
-.L79:  .string "crc8part"
-.L80:  .string "creal"
-.L81:  .string "daemon"
-.L82:  .string "difftime"
-.L83:  .string "dirname"
-.L84:  .string "div"
-.L85:  .string "dlclose"
-.L86:  .string "dlerror"
-.L87:  .string "dlopen"
-.L88:  .string "dlsym"
-.L89:  .string "dlsymtab"
-.L90:  .string "dns_add_nameserver"
-.L91:  .string "dns_bind"
-.L92:  .string "dns_find_answer"
-.L93:  .string "dns_foreach_nameserver"
-.L94:  .string "dns_initialize"
-.L95:  .string "dns_notify_nameserver"
-.L96:  .string "dns_query"
-.L97:  .string "dns_register_notify"
-.L98:  .string "dns_save_answer"
-.L99:  .string "dns_semgive"
-.L100: .string "dns_semtake"
-.L101: .string "dns_unregister_notify"
-.L102: .string "dprintf"
-.L103: .string "dup"
-.L104: .string "dup2"
-.L105: .string "envpath_init"
-.L106: .string "envpath_next"
-.L107: .string "envpath_release"
-.L108: .string "erf"
-.L109: .string "erff"
-.L110: .string "erfl"
-.L111: .string "ether_ntoa"
-.L112: .string "exec"
-.L113: .string "exit"
-.L114: .string "exp"
-.L115: .string "expf"
-.L116: .string "expl"
-.L117: .string "explicit_bzero"
-.L118: .string "fabs"
-.L119: .string "fabsf"
-.L120: .string "fabsl"
-.L121: .string "fclose"
-.L122: .string "fcntl"
-.L123: .string "fdopen"
-.L124: .string "feof"
-.L125: .string "ferror"
-.L126: .string "fflush"
-.L127: .string "ffs"
-.L128: .string "ffsl"
-.L129: .string "ffsll"
-.L130: .string "fgetc"
-.L131: .string "fgetpos"
-.L132: .string "fgets"
-.L133: .string "fileno"
-.L134: .string "floor"
-.L135: .string "floorf"
-.L136: .string "floorl"
-.L137: .string "fls"
-.L138: .string "flsl"
-.L139: .string "flsll"
-.L140: .string "fma"
-.L141: .string "fmaf"
-.L142: .string "fmod"
-.L143: .string "fmodf"
-.L144: .string "fmodl"
-.L145: .string "fopen"
-.L146: .string "fprintf"
-.L147: .string "fputc"
-.L148: .string "fputs"
-.L149: .string "fread"
-.L150: .string "free"
-.L151: .string "freeaddrinfo"
-.L152: .string "freopen"
-.L153: .string "frexp"
-.L154: .string "frexpf"
-.L155: .string "frexpl"
-.L156: .string "fscanf"
-.L157: .string "fseek"
-.L158: .string "fsetpos"
-.L159: .string "fstat"
-.L160: .string "fstatfs"
-.L161: .string "fsync"
-.L162: .string "ftell"
-.L163: .string "ftruncate"
-.L164: .string "fwrite"
-.L165: .string "gai_strerror"
-.L166: .string "gamma"
-.L167: .string "getaddrinfo"
-.L168: .string "getcwd"
-.L169: .string "getenv"
-.L170: .string "gethostbyaddr"
-.L171: .string "gethostbyaddr_r"
-.L172: .string "gethostbyname"
-.L173: .string "gethostbyname_r"
-.L174: .string "gethostname"
-.L175: .string "getnameinfo"
-.L176: .string "getopt"
-.L177: .string "getoptargp"
-.L178: .string "getoptindp"
-.L179: .string "getoptoptp"
-.L180: .string "getpeername"
-.L181: .string "getpid"
-.L182: .string "getprotobyname"
-.L183: .string "getrandom"
-.L184: .string "gets"
-.L185: .string "gets_s"
-.L186: .string "getservbyname"
-.L187: .string "getservbyname_r"
-.L188: .string "getsockname"
-.L189: .string "getsockopt"
-.L190: .string "gettimeofday"
-.L191: .string "gmtime"
-.L192: .string "gmtime_r"
-.L193: .string "h_errno"
-.L194: .string "htonl"
-.L195: .string "htons"
-.L196: .string "hypot"
-.L197: .string "ilogb"
-.L198: .string "ilogbf"
-.L199: .string "imaxabs"
-.L200: .string "in6addr_any"
-.L201: .string "inet_addr"
-.L202: .string "inet_aton"
-.L203: .string "inet_ntoa"
-.L204: .string "inet_ntop"
-.L205: .string "inet_pton"
-.L206: .string "ioctl"
-.L207: .string "isatty"
-.L208: .string "itoa"
-.L209: .string "kill"
-.L210: .string "labs"
-.L211: .string "ldexp"
-.L212: .string "ldexpf"
-.L213: .string "ldexpl"
-.L214: .string "ldiv"
-.L215: .string "lgamma"
-.L216: .string "lgamma_r"
-.L217: .string "listen"
-.L218: .string "llabs"
-.L219: .string "lldiv"
-.L220: .string "localeconv"
-.L221: .string "log"
-.L222: .string "log10"
-.L223: .string "log10f"
-.L224: .string "log10l"
-.L225: .string "log2"
-.L226: .string "log2f"
-.L227: .string "log2l"
-.L228: .string "logf"
-.L229: .string "logl"
-.L230: .string "lseek"
-.L231: .string "malloc"
-.L232: .string "match"
-.L233: .string "meadow_mappings"
-.L234: .string "memalign"
-.L235: .string "memccpy"
-.L236: .string "memchr"
-.L237: .string "memcmp"
-.L238: .string "memcpy"
-.L239: .string "memmove"
-.L240: .string "memrchr"
-.L241: .string "memset"
-.L242: .string "mkdir"
-.L243: .string "mkfifo"
-.L244: .string "mkfifo2"
-.L245: .string "mkstemp"
-.L246: .string "mktemp"
-.L247: .string "mktime"
-.L248: .string "mmap"
-.L249: .string "modf"
-.L250: .string "modff"
-.L251: .string "modfl"
-.L252: .string "mono_main"
-.L253: .string "mono_should_run"
-.L254: .string "mount"
-.L255: .string "munmap"
-.L256: .string "nanosleep"
-.L257: .string "nrand"
-.L258: .string "ntohl"
-.L259: .string "ntohs"
-.L260: .string "open"
-.L261: .string "opendir"
-.L262: .string "optarg"
-.L263: .string "optind"
-.L264: .string "optopt"
-.L265: .string "perror"
-.L266: .string "pipe"
-.L267: .string "pipe2"
-.L268: .string "poll"
-.L269: .string "posix_spawnattr_dump"
-.L270: .string "posix_spawnattr_getflags"
-.L271: .string "posix_spawnattr_getschedparam"
-.L272: .string "posix_spawnattr_getschedpolicy"
-.L273: .string "posix_spawnattr_getsigmask"
-.L274: .string "posix_spawnattr_init"
-.L275: .string "posix_spawnattr_setflags"
-.L276: .string "posix_spawnattr_setschedparam"
-.L277: .string "posix_spawnattr_setschedpolicy"
-.L278: .string "posix_spawnattr_setsigmask"
-.L279: .string "pow"
-.L280: .string "powf"
-.L281: .string "powl"
-.L282: .string "ppoll"
-.L283: .string "prctl"
-.L284: .string "pread"
-.L285: .string "printf"
-.L286: .string "pselect"
-.L287: .string "psiginfo"
-.L288: .string "psignal"
-.L289: .string "pthread_attr_destroy"
-.L290: .string "pthread_attr_getinheritsched"
-.L291: .string "pthread_attr_getschedparam"
-.L292: .string "pthread_attr_getschedpolicy"
-.L293: .string "pthread_attr_getstack"
-.L294: .string "pthread_attr_getstacksize"
-.L295: .string "pthread_attr_init"
-.L296: .string "pthread_attr_setinheritsched"
-.L297: .string "pthread_attr_setschedparam"
-.L298: .string "pthread_attr_setschedpolicy"
-.L299: .string "pthread_attr_setstack"
-.L300: .string "pthread_attr_setstacksize"
-.L301: .string "pthread_barrier_destroy"
-.L302: .string "pthread_barrier_init"
-.L303: .string "pthread_barrier_wait"
-.L304: .string "pthread_barrierattr_destroy"
-.L305: .string "pthread_barrierattr_getpshared"
-.L306: .string "pthread_barrierattr_init"
-.L307: .string "pthread_barrierattr_setpshared"
-.L308: .string "pthread_cancel"
-.L309: .string "pthread_cleanup_pop"
-.L310: .string "pthread_cleanup_push"
-.L311: .string "pthread_cond_broadcast"
-.L312: .string "pthread_cond_destroy"
-.L313: .string "pthread_cond_init"
-.L314: .string "pthread_cond_signal"
-.L315: .string "pthread_cond_timedwait"
-.L316: .string "pthread_cond_wait"
-.L317: .string "pthread_condattr_destroy"
-.L318: .string "pthread_condattr_init"
-.L319: .string "pthread_create"
-.L320: .string "pthread_detach"
-.L321: .string "pthread_exit"
-.L322: .string "pthread_get_stackaddr_np"
-.L323: .string "pthread_get_stacksize_np"
-.L324: .string "pthread_getschedparam"
-.L325: .string "pthread_getspecific"
-.L326: .string "pthread_join"
-.L327: .string "pthread_key_create"
-.L328: .string "pthread_key_delete"
-.L329: .string "pthread_kill"
-.L330: .string "pthread_mutex_consistent"
-.L331: .string "pthread_mutex_destroy"
-.L332: .string "pthread_mutex_init"
-.L333: .string "pthread_mutex_lock"
-.L334: .string "pthread_mutex_timedlock"
-.L335: .string "pthread_mutex_trylock"
-.L336: .string "pthread_mutex_unlock"
-.L337: .string "pthread_mutexattr_destroy"
-.L338: .string "pthread_mutexattr_getprotocol"
-.L339: .string "pthread_mutexattr_getpshared"
-.L340: .string "pthread_mutexattr_getrobust"
-.L341: .string "pthread_mutexattr_gettype"
-.L342: .string "pthread_mutexattr_init"
-.L343: .string "pthread_mutexattr_setprotocol"
-.L344: .string "pthread_mutexattr_setpshared"
-.L345: .string "pthread_mutexattr_setrobust"
-.L346: .string "pthread_mutexattr_settype"
-.L347: .string "pthread_once"
-.L348: .string "pthread_rwlock_destroy"
-.L349: .string "pthread_rwlock_init"
-.L350: .string "pthread_rwlock_rdlock"
-.L351: .string "pthread_rwlock_timedrdlock"
-.L352: .string "pthread_rwlock_timedwrlock"
-.L353: .string "pthread_rwlock_tryrdlock"
-.L354: .string "pthread_rwlock_trywrlock"
-.L355: .string "pthread_rwlock_unlock"
-.L356: .string "pthread_rwlock_wrlock"
-.L357: .string "pthread_setcancelstate"
-.L358: .string "pthread_setcanceltype"
-.L359: .string "pthread_setschedparam"
-.L360: .string "pthread_setschedprio"
-.L361: .string "pthread_setspecific"
-.L362: .string "pthread_sigmask"
-.L363: .string "pthread_startup"
-.L364: .string "pthread_testcancel"
-.L365: .string "pthread_yield"
-.L366: .string "putenv"
-.L367: .string "puts"
-.L368: .string "pwrite"
-.L369: .string "qsort"
-.L370: .string "raise"
-.L371: .string "rand"
-.L372: .string "random"
-.L373: .string "read"
-.L374: .string "readdir"
-.L375: .string "readdir_r"
-.L376: .string "readv"
-.L377: .string "realloc"
-.L378: .string "recv"
-.L379: .string "recvfrom"
-.L380: .string "recvmsg"
-.L381: .string "remove"
-.L382: .string "rename"
-.L383: .string "rewinddir"
-.L384: .string "rint"
-.L385: .string "rintf"
-.L386: .string "rintl"
-.L387: .string "rmdir"
-.L388: .string "round"
-.L389: .string "roundf"
-.L390: .string "roundl"
-.L391: .string "scalbn"
-.L392: .string "scalbnf"
-.L393: .string "scanf"
-.L394: .string "seekdir"
-.L395: .string "select"
-.L396: .string "sem_destroy"
-.L397: .string "sem_getprotocol"
-.L398: .string "sem_getvalue"
-.L399: .string "sem_init"
-.L400: .string "sem_post"
-.L401: .string "sem_setprotocol"
-.L402: .string "sem_timedwait"
-.L403: .string "sem_trywait"
-.L404: .string "sem_wait"
-.L405: .string "send"
-.L406: .string "sendfile"
-.L407: .string "sendmsg"
-.L408: .string "sendto"
-.L409: .string "set_errno"
-.L410: .string "setbuf"
-.L411: .string "setenv"
-.L412: .string "sethostname"
-.L413: .string "setlocale"
-.L414: .string "setlogmask"
-.L415: .string "setsockopt"
-.L416: .string "settimeofday"
-.L417: .string "setvbuf"
-.L418: .string "shutdown"
-.L419: .string "sigaction"
-.L420: .string "sigaddset"
-.L421: .string "sigdelset"
-.L422: .string "sigemptyset"
-.L423: .string "sigfillset"
-.L424: .string "sighold"
-.L425: .string "sigignore"
-.L426: .string "sigismember"
-.L427: .string "signal"
-.L428: .string "sigpause"
-.L429: .string "sigpending"
-.L430: .string "sigprocmask"
-.L431: .string "sigqueue"
-.L432: .string "sigrelse"
-.L433: .string "sigset"
-.L434: .string "sigsuspend"
-.L435: .string "sigtimedwait"
-.L436: .string "sigwait"
-.L437: .string "sigwaitinfo"
-.L438: .string "sin"
-.L439: .string "sinf"
-.L440: .string "sinh"
-.L441: .string "sinhf"
-.L442: .string "sinhl"
-.L443: .string "sinl"
-.L444: .string "sleep"
-.L445: .string "snprintf"
-.L446: .string "socket"
-.L447: .string "sprintf"
-.L448: .string "sqrt"
-.L449: .string "sqrtf"
-.L450: .string "sqrtl"
-.L451: .string "srand"
-.L452: .string "sscanf"
-.L453: .string "stat"
-.L454: .string "statfs"
-.L455: .string "stpcpy"
-.L456: .string "stpncpy"
-.L457: .string "strcasecmp"
-.L458: .string "strcasestr"
-.L459: .string "strcat"
-.L460: .string "strchr"
-.L461: .string "strcmp"
-.L462: .string "strcoll"
-.L463: .string "strcpy"
-.L464: .string "strcspn"
-.L465: .string "strdup"
-.L466: .string "stream_semgive"
-.L467: .string "stream_semtake"
-.L468: .string "strerror"
-.L469: .string "strerror_r"
-.L470: .string "strftime"
-.L471: .string "strlen"
-.L472: .string "strncasecmp"
-.L473: .string "strncat"
-.L474: .string "strncmp"
-.L475: .string "strncpy"
-.L476: .string "strndup"
-.L477: .string "strnlen"
-.L478: .string "strpbrk"
-.L479: .string "strrchr"
-.L480: .string "strsep"
-.L481: .string "strsignal"
-.L482: .string "strspn"
-.L483: .string "strstr"
-.L484: .string "strtod"
-.L485: .string "strtof"
-.L486: .string "strtoimax"
-.L487: .string "strtok"
-.L488: .string "strtok_r"
-.L489: .string "strtol"
-.L490: .string "strtold"
-.L491: .string "strtoll"
-.L492: .string "strtoul"
-.L493: .string "strtoull"
-.L494: .string "strtoumax"
-.L495: .string "strxfrm"
-.L496: .string "swab"
-.L497: .string "sysconf"
-.L498: .string "syslog"
-.L499: .string "tan"
-.L500: .string "tanf"
-.L501: .string "tanh"
-.L502: .string "tanhf"
-.L503: .string "tanhl"
-.L504: .string "tanl"
-.L505: .string "tcdrain"
-.L506: .string "tcflow"
-.L507: .string "tcflush"
-.L508: .string "tcgetattr"
-.L509: .string "tcsetattr"
-.L510: .string "tea_decrypt"
-.L511: .string "tea_encrypt"
-.L512: .string "telldir"
-.L513: .string "tempnam"
-.L514: .string "tgamma"
-.L515: .string "time"
-.L516: .string "tmpnam"
-.L517: .string "trunc"
-.L518: .string "truncate"
-.L519: .string "truncf"
-.L520: .string "truncl"
-.L521: .string "uadd32x64"
-.L522: .string "uadd64"
-.L523: .string "ub32sqrtub16"
-.L524: .string "umul32"
-.L525: .string "umul32x64"
-.L526: .string "umul64"
-.L527: .string "uname"
-.L528: .string "ungetc"
-.L529: .string "unlink"
-.L530: .string "unsetenv"
-.L531: .string "usleep"
-.L532: .string "usub64"
-.L533: .string "usub64x32"
-.L534: .string "vasprintf"
-.L535: .string "vdprintf"
-.L536: .string "vfork"
-.L537: .string "vfprintf"
-.L538: .string "vfscanf"
-.L539: .string "vprintf"
-.L540: .string "vsnprintf"
-.L541: .string "vsprintf"
-.L542: .string "vsscanf"
-.L543: .string "vsyslog"
-.L544: .string "waitpid"
-.L545: .string "write"
-.L546: .string "writev"
-.L547: .string "xorshift128"
-.L548: .string "zalloc"
-       .size   globalNames, . - globalNames
+SYMBOL(globalNames):
+       SIZE globalNames
 
        .align  ALIGN
-       .global nGlobals
-       .type   nGlobals, "object"
-nGlobals:      
-       .word   549
-       .size   nGlobals, . - nGlobals
+       GLOBAL  nGlobals
+SYMBOL(nGlobals):      
+       .word   0
+       SIZE    nGlobals
 
        .align  ALIGN
-       .global globalTable
-       .type   globalTable, "object"
-globalTable:
-       globalEntry 0, _ZdlPvj
-       globalEntry 1, __cos
-       globalEntry 2, __cxa_pure_virtual
-       globalEntry 3, __dso_handle
-       globalEntry 4, __dtoa_engine
-       globalEntry 5, __sin
-       globalEntry 6, __swap_uint32
-       globalEntry 7, __swap_uint64
-       globalEntry 8, __ultoa_invert
-       globalEntry 9, _exit
-       globalEntry 10, abort
-       globalEntry 11, abs
-       globalEntry 12, accept
-       globalEntry 13, access
-       globalEntry 14, acos
-       globalEntry 15, acosf
-       globalEntry 16, acosh
-       globalEntry 17, acoshf
-       globalEntry 18, acoshl
-       globalEntry 19, acosl
-       globalEntry 20, add_file_action
-       globalEntry 21, asin
-       globalEntry 22, asinf
-       globalEntry 23, asinh
-       globalEntry 24, asinhf
-       globalEntry 25, asinhl
-       globalEntry 26, asinl
-       globalEntry 27, asprintf
-       globalEntry 28, atan
-       globalEntry 29, atan2
-       globalEntry 30, atan2f
-       globalEntry 31, atan2l
-       globalEntry 32, atanf
-       globalEntry 33, atanh
-       globalEntry 34, atanhf
-       globalEntry 35, atanhl
-       globalEntry 36, atanl
-       globalEntry 37, b16atan2
-       globalEntry 38, b16cos
-       globalEntry 39, b16sin
-       globalEntry 40, basename
-       globalEntry 41, bind
-       globalEntry 42, boardctl
-       globalEntry 43, bsearch
-       globalEntry 44, cabs
-       globalEntry 45, cacheflush
-       globalEntry 46, calloc
-       globalEntry 47, cbrtf
-       globalEntry 48, ceil
-       globalEntry 49, ceilf
-       globalEntry 50, ceill
-       globalEntry 51, cfgetspeed
-       globalEntry 52, cfmakeraw
-       globalEntry 53, cfsetspeed
-       globalEntry 54, chdir
-       globalEntry 55, cimag
-       globalEntry 56, clearenv
-       globalEntry 57, clearerr
-       globalEntry 58, clock
-       globalEntry 59, close
-       globalEntry 60, closedir
-       globalEntry 61, connect
-       globalEntry 62, copysign
-       globalEntry 63, copysignf
-       globalEntry 64, copysignl
-       globalEntry 65, cos
-       globalEntry 66, cosf
-       globalEntry 67, cosh
-       globalEntry 68, coshf
-       globalEntry 69, coshl
-       globalEntry 70, cosl
-       globalEntry 71, crc16
-       globalEntry 72, crc16part
-       globalEntry 73, crc32
-       globalEntry 74, crc32part
-       globalEntry 75, crc64
-       globalEntry 76, crc64part
-       globalEntry 77, crc8
-       globalEntry 78, crc8ccitt
-       globalEntry 79, crc8part
-       globalEntry 80, creal
-       globalEntry 81, daemon
-       globalEntry 82, difftime
-       globalEntry 83, dirname
-       globalEntry 84, div
-       globalEntry 85, dlclose
-       globalEntry 86, dlerror
-       globalEntry 87, dlopen
-       globalEntry 88, dlsym
-       globalEntry 89, dlsymtab
-       globalEntry 90, dns_add_nameserver
-       globalEntry 91, dns_bind
-       globalEntry 92, dns_find_answer
-       globalEntry 93, dns_foreach_nameserver
-       globalEntry 94, dns_initialize
-       globalEntry 95, dns_notify_nameserver
-       globalEntry 96, dns_query
-       globalEntry 97, dns_register_notify
-       globalEntry 98, dns_save_answer
-       globalEntry 99, dns_semgive
-       globalEntry 100, dns_semtake
-       globalEntry 101, dns_unregister_notify
-       globalEntry 102, dprintf
-       globalEntry 103, dup
-       globalEntry 104, dup2
-       globalEntry 105, envpath_init
-       globalEntry 106, envpath_next
-       globalEntry 107, envpath_release
-       globalEntry 108, erf
-       globalEntry 109, erff
-       globalEntry 110, erfl
-       globalEntry 111, ether_ntoa
-       globalEntry 112, exec
-       globalEntry 113, exit
-       globalEntry 114, exp
-       globalEntry 115, expf
-       globalEntry 116, expl
-       globalEntry 117, explicit_bzero
-       globalEntry 118, fabs
-       globalEntry 119, fabsf
-       globalEntry 120, fabsl
-       globalEntry 121, fclose
-       globalEntry 122, fcntl
-       globalEntry 123, fdopen
-       globalEntry 124, feof
-       globalEntry 125, ferror
-       globalEntry 126, fflush
-       globalEntry 127, ffs
-       globalEntry 128, ffsl
-       globalEntry 129, ffsll
-       globalEntry 130, fgetc
-       globalEntry 131, fgetpos
-       globalEntry 132, fgets
-       globalEntry 133, fileno
-       globalEntry 134, floor
-       globalEntry 135, floorf
-       globalEntry 136, floorl
-       globalEntry 137, fls
-       globalEntry 138, flsl
-       globalEntry 139, flsll
-       globalEntry 140, fma
-       globalEntry 141, fmaf
-       globalEntry 142, fmod
-       globalEntry 143, fmodf
-       globalEntry 144, fmodl
-       globalEntry 145, fopen
-       globalEntry 146, fprintf
-       globalEntry 147, fputc
-       globalEntry 148, fputs
-       globalEntry 149, fread
-       globalEntry 150, free
-       globalEntry 151, freeaddrinfo
-       globalEntry 152, freopen
-       globalEntry 153, frexp
-       globalEntry 154, frexpf
-       globalEntry 155, frexpl
-       globalEntry 156, fscanf
-       globalEntry 157, fseek
-       globalEntry 158, fsetpos
-       globalEntry 159, fstat
-       globalEntry 160, fstatfs
-       globalEntry 161, fsync
-       globalEntry 162, ftell
-       globalEntry 163, ftruncate
-       globalEntry 164, fwrite
-       globalEntry 165, gai_strerror
-       globalEntry 166, gamma
-       globalEntry 167, getaddrinfo
-       globalEntry 168, getcwd
-       globalEntry 169, getenv
-       globalEntry 170, gethostbyaddr
-       globalEntry 171, gethostbyaddr_r
-       globalEntry 172, gethostbyname
-       globalEntry 173, gethostbyname_r
-       globalEntry 174, gethostname
-       globalEntry 175, getnameinfo
-       globalEntry 176, getopt
-       globalEntry 177, getoptargp
-       globalEntry 178, getoptindp
-       globalEntry 179, getoptoptp
-       globalEntry 180, getpeername
-       globalEntry 181, getpid
-       globalEntry 182, getprotobyname
-       globalEntry 183, getrandom
-       globalEntry 184, gets
-       globalEntry 185, gets_s
-       globalEntry 186, getservbyname
-       globalEntry 187, getservbyname_r
-       globalEntry 188, getsockname
-       globalEntry 189, getsockopt
-       globalEntry 190, gettimeofday
-       globalEntry 191, gmtime
-       globalEntry 192, gmtime_r
-       globalEntry 193, h_errno
-       globalEntry 194, htonl
-       globalEntry 195, htons
-       globalEntry 196, hypot
-       globalEntry 197, ilogb
-       globalEntry 198, ilogbf
-       globalEntry 199, imaxabs
-       globalEntry 200, in6addr_any
-       globalEntry 201, inet_addr
-       globalEntry 202, inet_aton
-       globalEntry 203, inet_ntoa
-       globalEntry 204, inet_ntop
-       globalEntry 205, inet_pton
-       globalEntry 206, ioctl
-       globalEntry 207, isatty
-       globalEntry 208, itoa
-       globalEntry 209, kill
-       globalEntry 210, labs
-       globalEntry 211, ldexp
-       globalEntry 212, ldexpf
-       globalEntry 213, ldexpl
-       globalEntry 214, ldiv
-       globalEntry 215, lgamma
-       globalEntry 216, lgamma_r
-       globalEntry 217, listen
-       globalEntry 218, llabs
-       globalEntry 219, lldiv
-       globalEntry 220, localeconv
-       globalEntry 221, log
-       globalEntry 222, log10
-       globalEntry 223, log10f
-       globalEntry 224, log10l
-       globalEntry 225, log2
-       globalEntry 226, log2f
-       globalEntry 227, log2l
-       globalEntry 228, logf
-       globalEntry 229, logl
-       globalEntry 230, lseek
-       globalEntry 231, malloc
-       globalEntry 232, match
-       globalEntry 233, meadow_mappings
-       globalEntry 234, memalign
-       globalEntry 235, memccpy
-       globalEntry 236, memchr
-       globalEntry 237, memcmp
-       globalEntry 238, memcpy
-       globalEntry 239, memmove
-       globalEntry 240, memrchr
-       globalEntry 241, memset
-       globalEntry 242, mkdir
-       globalEntry 243, mkfifo
-       globalEntry 244, mkfifo2
-       globalEntry 245, mkstemp
-       globalEntry 246, mktemp
-       globalEntry 247, mktime
-       globalEntry 248, mmap
-       globalEntry 249, modf
-       globalEntry 250, modff
-       globalEntry 251, modfl
-       globalEntry 252, mono_main
-       globalEntry 253, mono_should_run
-       globalEntry 254, mount
-       globalEntry 255, munmap
-       globalEntry 256, nanosleep
-       globalEntry 257, nrand
-       globalEntry 258, ntohl
-       globalEntry 259, ntohs
-       globalEntry 260, open
-       globalEntry 261, opendir
-       globalEntry 262, optarg
-       globalEntry 263, optind
-       globalEntry 264, optopt
-       globalEntry 265, perror
-       globalEntry 266, pipe
-       globalEntry 267, pipe2
-       globalEntry 268, poll
-       globalEntry 269, posix_spawnattr_dump
-       globalEntry 270, posix_spawnattr_getflags
-       globalEntry 271, posix_spawnattr_getschedparam
-       globalEntry 272, posix_spawnattr_getschedpolicy
-       globalEntry 273, posix_spawnattr_getsigmask
-       globalEntry 274, posix_spawnattr_init
-       globalEntry 275, posix_spawnattr_setflags
-       globalEntry 276, posix_spawnattr_setschedparam
-       globalEntry 277, posix_spawnattr_setschedpolicy
-       globalEntry 278, posix_spawnattr_setsigmask
-       globalEntry 279, pow
-       globalEntry 280, powf
-       globalEntry 281, powl
-       globalEntry 282, ppoll
-       globalEntry 283, prctl
-       globalEntry 284, pread
-       globalEntry 285, printf
-       globalEntry 286, pselect
-       globalEntry 287, psiginfo
-       globalEntry 288, psignal
-       globalEntry 289, pthread_attr_destroy
-       globalEntry 290, pthread_attr_getinheritsched
-       globalEntry 291, pthread_attr_getschedparam
-       globalEntry 292, pthread_attr_getschedpolicy
-       globalEntry 293, pthread_attr_getstack
-       globalEntry 294, pthread_attr_getstacksize
-       globalEntry 295, pthread_attr_init
-       globalEntry 296, pthread_attr_setinheritsched
-       globalEntry 297, pthread_attr_setschedparam
-       globalEntry 298, pthread_attr_setschedpolicy
-       globalEntry 299, pthread_attr_setstack
-       globalEntry 300, pthread_attr_setstacksize
-       globalEntry 301, pthread_barrier_destroy
-       globalEntry 302, pthread_barrier_init
-       globalEntry 303, pthread_barrier_wait
-       globalEntry 304, pthread_barrierattr_destroy
-       globalEntry 305, pthread_barrierattr_getpshared
-       globalEntry 306, pthread_barrierattr_init
-       globalEntry 307, pthread_barrierattr_setpshared
-       globalEntry 308, pthread_cancel
-       globalEntry 309, pthread_cleanup_pop
-       globalEntry 310, pthread_cleanup_push
-       globalEntry 311, pthread_cond_broadcast
-       globalEntry 312, pthread_cond_destroy
-       globalEntry 313, pthread_cond_init
-       globalEntry 314, pthread_cond_signal
-       globalEntry 315, pthread_cond_timedwait
-       globalEntry 316, pthread_cond_wait
-       globalEntry 317, pthread_condattr_destroy
-       globalEntry 318, pthread_condattr_init
-       globalEntry 319, pthread_create
-       globalEntry 320, pthread_detach
-       globalEntry 321, pthread_exit
-       globalEntry 322, pthread_get_stackaddr_np
-       globalEntry 323, pthread_get_stacksize_np
-       globalEntry 324, pthread_getschedparam
-       globalEntry 325, pthread_getspecific
-       globalEntry 326, pthread_join
-       globalEntry 327, pthread_key_create
-       globalEntry 328, pthread_key_delete
-       globalEntry 329, pthread_kill
-       globalEntry 330, pthread_mutex_consistent
-       globalEntry 331, pthread_mutex_destroy
-       globalEntry 332, pthread_mutex_init
-       globalEntry 333, pthread_mutex_lock
-       globalEntry 334, pthread_mutex_timedlock
-       globalEntry 335, pthread_mutex_trylock
-       globalEntry 336, pthread_mutex_unlock
-       globalEntry 337, pthread_mutexattr_destroy
-       globalEntry 338, pthread_mutexattr_getprotocol
-       globalEntry 339, pthread_mutexattr_getpshared
-       globalEntry 340, pthread_mutexattr_getrobust
-       globalEntry 341, pthread_mutexattr_gettype
-       globalEntry 342, pthread_mutexattr_init
-       globalEntry 343, pthread_mutexattr_setprotocol
-       globalEntry 344, pthread_mutexattr_setpshared
-       globalEntry 345, pthread_mutexattr_setrobust
-       globalEntry 346, pthread_mutexattr_settype
-       globalEntry 347, pthread_once
-       globalEntry 348, pthread_rwlock_destroy
-       globalEntry 349, pthread_rwlock_init
-       globalEntry 350, pthread_rwlock_rdlock
-       globalEntry 351, pthread_rwlock_timedrdlock
-       globalEntry 352, pthread_rwlock_timedwrlock
-       globalEntry 353, pthread_rwlock_tryrdlock
-       globalEntry 354, pthread_rwlock_trywrlock
-       globalEntry 355, pthread_rwlock_unlock
-       globalEntry 356, pthread_rwlock_wrlock
-       globalEntry 357, pthread_setcancelstate
-       globalEntry 358, pthread_setcanceltype
-       globalEntry 359, pthread_setschedparam
-       globalEntry 360, pthread_setschedprio
-       globalEntry 361, pthread_setspecific
-       globalEntry 362, pthread_sigmask
-       globalEntry 363, pthread_startup
-       globalEntry 364, pthread_testcancel
-       globalEntry 365, pthread_yield
-       globalEntry 366, putenv
-       globalEntry 367, puts
-       globalEntry 368, pwrite
-       globalEntry 369, qsort
-       globalEntry 370, raise
-       globalEntry 371, rand
-       globalEntry 372, random
-       globalEntry 373, read
-       globalEntry 374, readdir
-       globalEntry 375, readdir_r
-       globalEntry 376, readv
-       globalEntry 377, realloc
-       globalEntry 378, recv
-       globalEntry 379, recvfrom
-       globalEntry 380, recvmsg
-       globalEntry 381, remove
-       globalEntry 382, rename
-       globalEntry 383, rewinddir
-       globalEntry 384, rint
-       globalEntry 385, rintf
-       globalEntry 386, rintl
-       globalEntry 387, rmdir
-       globalEntry 388, round
-       globalEntry 389, roundf
-       globalEntry 390, roundl
-       globalEntry 391, scalbn
-       globalEntry 392, scalbnf
-       globalEntry 393, scanf
-       globalEntry 394, seekdir
-       globalEntry 395, select
-       globalEntry 396, sem_destroy
-       globalEntry 397, sem_getprotocol
-       globalEntry 398, sem_getvalue
-       globalEntry 399, sem_init
-       globalEntry 400, sem_post
-       globalEntry 401, sem_setprotocol
-       globalEntry 402, sem_timedwait
-       globalEntry 403, sem_trywait
-       globalEntry 404, sem_wait
-       globalEntry 405, send
-       globalEntry 406, sendfile
-       globalEntry 407, sendmsg
-       globalEntry 408, sendto
-       globalEntry 409, set_errno
-       globalEntry 410, setbuf
-       globalEntry 411, setenv
-       globalEntry 412, sethostname
-       globalEntry 413, setlocale
-       globalEntry 414, setlogmask
-       globalEntry 415, setsockopt
-       globalEntry 416, settimeofday
-       globalEntry 417, setvbuf
-       globalEntry 418, shutdown
-       globalEntry 419, sigaction
-       globalEntry 420, sigaddset
-       globalEntry 421, sigdelset
-       globalEntry 422, sigemptyset
-       globalEntry 423, sigfillset
-       globalEntry 424, sighold
-       globalEntry 425, sigignore
-       globalEntry 426, sigismember
-       globalEntry 427, signal
-       globalEntry 428, sigpause
-       globalEntry 429, sigpending
-       globalEntry 430, sigprocmask
-       globalEntry 431, sigqueue
-       globalEntry 432, sigrelse
-       globalEntry 433, sigset
-       globalEntry 434, sigsuspend
-       globalEntry 435, sigtimedwait
-       globalEntry 436, sigwait
-       globalEntry 437, sigwaitinfo
-       globalEntry 438, sin
-       globalEntry 439, sinf
-       globalEntry 440, sinh
-       globalEntry 441, sinhf
-       globalEntry 442, sinhl
-       globalEntry 443, sinl
-       globalEntry 444, sleep
-       globalEntry 445, snprintf
-       globalEntry 446, socket
-       globalEntry 447, sprintf
-       globalEntry 448, sqrt
-       globalEntry 449, sqrtf
-       globalEntry 450, sqrtl
-       globalEntry 451, srand
-       globalEntry 452, sscanf
-       globalEntry 453, stat
-       globalEntry 454, statfs
-       globalEntry 455, stpcpy
-       globalEntry 456, stpncpy
-       globalEntry 457, strcasecmp
-       globalEntry 458, strcasestr
-       globalEntry 459, strcat
-       globalEntry 460, strchr
-       globalEntry 461, strcmp
-       globalEntry 462, strcoll
-       globalEntry 463, strcpy
-       globalEntry 464, strcspn
-       globalEntry 465, strdup
-       globalEntry 466, stream_semgive
-       globalEntry 467, stream_semtake
-       globalEntry 468, strerror
-       globalEntry 469, strerror_r
-       globalEntry 470, strftime
-       globalEntry 471, strlen
-       globalEntry 472, strncasecmp
-       globalEntry 473, strncat
-       globalEntry 474, strncmp
-       globalEntry 475, strncpy
-       globalEntry 476, strndup
-       globalEntry 477, strnlen
-       globalEntry 478, strpbrk
-       globalEntry 479, strrchr
-       globalEntry 480, strsep
-       globalEntry 481, strsignal
-       globalEntry 482, strspn
-       globalEntry 483, strstr
-       globalEntry 484, strtod
-       globalEntry 485, strtof
-       globalEntry 486, strtoimax
-       globalEntry 487, strtok
-       globalEntry 488, strtok_r
-       globalEntry 489, strtol
-       globalEntry 490, strtold
-       globalEntry 491, strtoll
-       globalEntry 492, strtoul
-       globalEntry 493, strtoull
-       globalEntry 494, strtoumax
-       globalEntry 495, strxfrm
-       globalEntry 496, swab
-       globalEntry 497, sysconf
-       globalEntry 498, syslog
-       globalEntry 499, tan
-       globalEntry 500, tanf
-       globalEntry 501, tanh
-       globalEntry 502, tanhf
-       globalEntry 503, tanhl
-       globalEntry 504, tanl
-       globalEntry 505, tcdrain
-       globalEntry 506, tcflow
-       globalEntry 507, tcflush
-       globalEntry 508, tcgetattr
-       globalEntry 509, tcsetattr
-       globalEntry 510, tea_decrypt
-       globalEntry 511, tea_encrypt
-       globalEntry 512, telldir
-       globalEntry 513, tempnam
-       globalEntry 514, tgamma
-       globalEntry 515, time
-       globalEntry 516, tmpnam
-       globalEntry 517, trunc
-       globalEntry 518, truncate
-       globalEntry 519, truncf
-       globalEntry 520, truncl
-       globalEntry 521, uadd32x64
-       globalEntry 522, uadd64
-       globalEntry 523, ub32sqrtub16
-       globalEntry 524, umul32
-       globalEntry 525, umul32x64
-       globalEntry 526, umul64
-       globalEntry 527, uname
-       globalEntry 528, ungetc
-       globalEntry 529, unlink
-       globalEntry 530, unsetenv
-       globalEntry 531, usleep
-       globalEntry 532, usub64
-       globalEntry 533, usub64x32
-       globalEntry 534, vasprintf
-       globalEntry 535, vdprintf
-       globalEntry 536, vfork
-       globalEntry 537, vfprintf
-       globalEntry 538, vfscanf
-       globalEntry 539, vprintf
-       globalEntry 540, vsnprintf
-       globalEntry 541, vsprintf
-       globalEntry 542, vsscanf
-       globalEntry 543, vsyslog
-       globalEntry 544, waitpid
-       globalEntry 545, write
-       globalEntry 546, writev
-       globalEntry 547, xorshift128
-       globalEntry 548, zalloc
-       .size   globalTable, . - globalTable
+       GLOBAL  globalTable
+SYMBOL(globalTable):
+       SIZE    globalTable
diff --git a/libs/libc/modlib/modlib_loadhdrs.c 
b/libs/libc/modlib/modlib_loadhdrs.c
index 42492844de..d1776f8446 100644
--- a/libs/libc/modlib/modlib_loadhdrs.c
+++ b/libs/libc/modlib/modlib_loadhdrs.c
@@ -70,14 +70,6 @@ int modlib_loadhdrs(FAR struct mod_loadinfo_s *loadinfo)
       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 */
 
   shdrsize = (size_t)loadinfo->ehdr.e_shentsize *
@@ -88,19 +80,9 @@ int modlib_loadhdrs(FAR struct mod_loadinfo_s *loadinfo)
       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 */
 
-  loadinfo->shdr = (FAR FAR Elf_Shdr *)lib_malloc(shdrsize);
+  loadinfo->shdr = (FAR Elf_Shdr *)lib_malloc(shdrsize);
   if (!loadinfo->shdr)
     {
       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);
     }
 
-  /* Allocate memory to hold a working copy of the program header table */
-
-  loadinfo->phdr = (FAR FAR Elf_Phdr *)lib_malloc(phdrsize);
-  if (!loadinfo->shdr)
+  if (loadinfo->ehdr.e_phnum > 0)
     {
-      lib_free((FAR void *)loadinfo->shdr);
-      berr("ERROR: Failed to allocate the program header table. Size: %ld\n",
-           (long)phdrsize);
-      return -ENOMEM;
+      /* 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 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);
+        }
     }
-
-  /* Read the program header table into memory */
-
-  ret = modlib_read(loadinfo, (FAR uint8_t *)loadinfo->phdr, phdrsize,
-                    loadinfo->ehdr.e_phoff);
-  if (ret < 0)
+  else
     {
-      berr("ERROR: Failed to read program header table: %d\n", ret);
-      lib_free((FAR void *)loadinfo->phdr);
-      lib_free((FAR void *)loadinfo->shdr);
+      loadinfo->phdr = NULL;
     }
 
   return ret;
diff --git a/libs/libc/modlib/modlib_verify.c b/libs/libc/modlib/modlib_verify.c
index 6fa4a9e055..29e77a958b 100644
--- a/libs/libc/modlib/modlib_verify.c
+++ b/libs/libc/modlib/modlib_verify.c
@@ -80,11 +80,11 @@ int modlib_verifyheader(FAR const Elf_Ehdr *ehdr)
 
   if (ehdr->e_type != ET_REL)
     {
-        if (ehdr->e_type != ET_DYN)
-          {
-            berr("ERROR: Not a relocatable file: e_type=%d\n", ehdr->e_type);
-            return -EINVAL;
-          }
+      if (ehdr->e_type != ET_DYN)
+        {
+          berr("ERROR: Not a relocatable file: e_type=%d\n", ehdr->e_type);
+          return -EINVAL;
+        }
     }
 
   /* Verify that this file works with the currently configured architecture */
diff --git a/libs/libc/modlib/modlib_x32_globals.S 
b/libs/libc/modlib/modlib_x32_globals.S
deleted file mode 100644
index ad195372c0..0000000000
--- a/libs/libc/modlib/modlib_x32_globals.S
+++ /dev/null
@@ -1,1116 +0,0 @@
-        .data
-        .align 4
-       .global globalNames
-
-globalNames:
-.L0:   .string "_ZdlPvj"
-.L1:   .string "__cos"
-.L2:   .string "__cxa_pure_virtual"
-.L3:   .string "__dso_handle"
-.L4:   .string "__dtoa_engine"
-.L5:   .string "__sin"
-.L6:   .string "__swap_uint32"
-.L7:   .string "__swap_uint64"
-.L8:   .string "__ultoa_invert"
-.L9:   .string "_exit"
-.L10:  .string "abort"
-.L11:  .string "abs"
-.L12:  .string "accept"
-.L13:  .string "access"
-.L14:  .string "acos"
-.L15:  .string "acosf"
-.L16:  .string "acosh"
-.L17:  .string "acoshf"
-.L18:  .string "acoshl"
-.L19:  .string "acosl"
-.L20:  .string "add_file_action"
-.L21:  .string "asin"
-.L22:  .string "asinf"
-.L23:  .string "asinh"
-.L24:  .string "asinhf"
-.L25:  .string "asinhl"
-.L26:  .string "asinl"
-.L27:  .string "asprintf"
-.L28:  .string "atan"
-.L29:  .string "atan2"
-.L30:  .string "atan2f"
-.L31:  .string "atan2l"
-.L32:  .string "atanf"
-.L33:  .string "atanh"
-.L34:  .string "atanhf"
-.L35:  .string "atanhl"
-.L36:  .string "atanl"
-.L37:  .string "b16atan2"
-.L38:  .string "b16cos"
-.L39:  .string "b16sin"
-.L40:  .string "basename"
-.L41:  .string "bind"
-.L42:  .string "boardctl"
-.L43:  .string "bsearch"
-.L44:  .string "cabs"
-.L45:  .string "cacheflush"
-.L46:  .string "calloc"
-.L47:  .string "cbrtf"
-.L48:  .string "ceil"
-.L49:  .string "ceilf"
-.L50:  .string "ceill"
-.L51:  .string "cfgetspeed"
-.L52:  .string "cfmakeraw"
-.L53:  .string "cfsetspeed"
-.L54:  .string "chdir"
-.L55:  .string "cimag"
-.L56:  .string "clearenv"
-.L57:  .string "clearerr"
-.L58:  .string "clock"
-.L59:  .string "close"
-.L60:  .string "closedir"
-.L61:  .string "connect"
-.L62:  .string "copysign"
-.L63:  .string "copysignf"
-.L64:  .string "copysignl"
-.L65:  .string "cos"
-.L66:  .string "cosf"
-.L67:  .string "cosh"
-.L68:  .string "coshf"
-.L69:  .string "coshl"
-.L70:  .string "cosl"
-.L71:  .string "crc16"
-.L72:  .string "crc16part"
-.L73:  .string "crc32"
-.L74:  .string "crc32part"
-.L75:  .string "crc64"
-.L76:  .string "crc64part"
-.L77:  .string "crc8"
-.L78:  .string "crc8ccitt"
-.L79:  .string "crc8part"
-.L80:  .string "creal"
-.L81:  .string "daemon"
-.L82:  .string "difftime"
-.L83:  .string "dirname"
-.L84:  .string "div"
-.L85:  .string "dlclose"
-.L86:  .string "dlerror"
-.L87:  .string "dlopen"
-.L88:  .string "dlsym"
-.L89:  .string "dlsymtab"
-.L90:  .string "dns_add_nameserver"
-.L91:  .string "dns_bind"
-.L92:  .string "dns_find_answer"
-.L93:  .string "dns_foreach_nameserver"
-.L94:  .string "dns_initialize"
-.L95:  .string "dns_notify_nameserver"
-.L96:  .string "dns_query"
-.L97:  .string "dns_register_notify"
-.L98:  .string "dns_save_answer"
-.L99:  .string "dns_semgive"
-.L100: .string "dns_semtake"
-.L101: .string "dns_unregister_notify"
-.L102: .string "dprintf"
-.L103: .string "dup"
-.L104: .string "dup2"
-.L105: .string "envpath_init"
-.L106: .string "envpath_next"
-.L107: .string "envpath_release"
-.L108: .string "erf"
-.L109: .string "erff"
-.L110: .string "erfl"
-.L111: .string "ether_ntoa"
-.L112: .string "exec"
-.L113: .string "exit"
-.L114: .string "exp"
-.L115: .string "expf"
-.L116: .string "expl"
-.L117: .string "explicit_bzero"
-.L118: .string "fabs"
-.L119: .string "fabsf"
-.L120: .string "fabsl"
-.L121: .string "fclose"
-.L122: .string "fcntl"
-.L123: .string "fdopen"
-.L124: .string "feof"
-.L125: .string "ferror"
-.L126: .string "fflush"
-.L127: .string "ffs"
-.L128: .string "ffsl"
-.L129: .string "ffsll"
-.L130: .string "fgetc"
-.L131: .string "fgetpos"
-.L132: .string "fgets"
-.L133: .string "fileno"
-.L134: .string "floor"
-.L135: .string "floorf"
-.L136: .string "floorl"
-.L137: .string "fls"
-.L138: .string "flsl"
-.L139: .string "flsll"
-.L140: .string "fma"
-.L141: .string "fmaf"
-.L142: .string "fmod"
-.L143: .string "fmodf"
-.L144: .string "fmodl"
-.L145: .string "fopen"
-.L146: .string "fprintf"
-.L147: .string "fputc"
-.L148: .string "fputs"
-.L149: .string "fread"
-.L150: .string "free"
-.L151: .string "freeaddrinfo"
-.L152: .string "freopen"
-.L153: .string "frexp"
-.L154: .string "frexpf"
-.L155: .string "frexpl"
-.L156: .string "fscanf"
-.L157: .string "fseek"
-.L158: .string "fsetpos"
-.L159: .string "fstat"
-.L160: .string "fstatfs"
-.L161: .string "fsync"
-.L162: .string "ftell"
-.L163: .string "ftruncate"
-.L164: .string "fwrite"
-.L165: .string "gai_strerror"
-.L166: .string "gamma"
-.L167: .string "getaddrinfo"
-.L168: .string "getcwd"
-.L169: .string "getenv"
-.L170: .string "gethostbyaddr"
-.L171: .string "gethostbyaddr_r"
-.L172: .string "gethostbyname"
-.L173: .string "gethostbyname_r"
-.L174: .string "gethostname"
-.L175: .string "getnameinfo"
-.L176: .string "getopt"
-.L177: .string "getoptargp"
-.L178: .string "getoptindp"
-.L179: .string "getoptoptp"
-.L180: .string "getpeername"
-.L181: .string "getpid"
-.L182: .string "getprotobyname"
-.L183: .string "getrandom"
-.L184: .string "gets"
-.L185: .string "gets_s"
-.L186: .string "getservbyname"
-.L187: .string "getservbyname_r"
-.L188: .string "getsockname"
-.L189: .string "getsockopt"
-.L190: .string "gettimeofday"
-.L191: .string "gmtime"
-.L192: .string "gmtime_r"
-.L193: .string "h_errno"
-.L194: .string "htonl"
-.L195: .string "htons"
-.L196: .string "hypot"
-.L197: .string "ilogb"
-.L198: .string "ilogbf"
-.L199: .string "imaxabs"
-.L200: .string "in6addr_any"
-.L201: .string "inet_addr"
-.L202: .string "inet_aton"
-.L203: .string "inet_ntoa"
-.L204: .string "inet_ntop"
-.L205: .string "inet_pton"
-.L206: .string "ioctl"
-.L207: .string "isatty"
-.L208: .string "itoa"
-.L209: .string "kill"
-.L210: .string "labs"
-.L211: .string "ldexp"
-.L212: .string "ldexpf"
-.L213: .string "ldexpl"
-.L214: .string "ldiv"
-.L215: .string "lgamma"
-.L216: .string "lgamma_r"
-.L217: .string "listen"
-.L218: .string "llabs"
-.L219: .string "lldiv"
-.L220: .string "localeconv"
-.L221: .string "log"
-.L222: .string "log10"
-.L223: .string "log10f"
-.L224: .string "log10l"
-.L225: .string "log2"
-.L226: .string "log2f"
-.L227: .string "log2l"
-.L228: .string "logf"
-.L229: .string "logl"
-.L230: .string "lseek"
-.L231: .string "malloc"
-.L232: .string "match"
-.L233: .string "meadow_mappings"
-.L234: .string "memalign"
-.L235: .string "memccpy"
-.L236: .string "memchr"
-.L237: .string "memcmp"
-.L238: .string "memcpy"
-.L239: .string "memmove"
-.L240: .string "memrchr"
-.L241: .string "memset"
-.L242: .string "mkdir"
-.L243: .string "mkfifo"
-.L244: .string "mkfifo2"
-.L245: .string "mkstemp"
-.L246: .string "mktemp"
-.L247: .string "mktime"
-.L248: .string "mmap"
-.L249: .string "modf"
-.L250: .string "modff"
-.L251: .string "modfl"
-.L252: .string "mono_main"
-.L253: .string "mono_should_run"
-.L254: .string "mount"
-.L255: .string "munmap"
-.L256: .string "nanosleep"
-.L257: .string "nrand"
-.L258: .string "ntohl"
-.L259: .string "ntohs"
-.L260: .string "open"
-.L261: .string "opendir"
-.L262: .string "optarg"
-.L263: .string "optind"
-.L264: .string "optopt"
-.L265: .string "perror"
-.L266: .string "pipe"
-.L267: .string "pipe2"
-.L268: .string "poll"
-.L269: .string "posix_spawnattr_dump"
-.L270: .string "posix_spawnattr_getflags"
-.L271: .string "posix_spawnattr_getschedparam"
-.L272: .string "posix_spawnattr_getschedpolicy"
-.L273: .string "posix_spawnattr_getsigmask"
-.L274: .string "posix_spawnattr_init"
-.L275: .string "posix_spawnattr_setflags"
-.L276: .string "posix_spawnattr_setschedparam"
-.L277: .string "posix_spawnattr_setschedpolicy"
-.L278: .string "posix_spawnattr_setsigmask"
-.L279: .string "pow"
-.L280: .string "powf"
-.L281: .string "powl"
-.L282: .string "ppoll"
-.L283: .string "prctl"
-.L284: .string "pread"
-.L285: .string "printf"
-.L286: .string "pselect"
-.L287: .string "psiginfo"
-.L288: .string "psignal"
-.L289: .string "pthread_attr_destroy"
-.L290: .string "pthread_attr_getinheritsched"
-.L291: .string "pthread_attr_getschedparam"
-.L292: .string "pthread_attr_getschedpolicy"
-.L293: .string "pthread_attr_getstack"
-.L294: .string "pthread_attr_getstacksize"
-.L295: .string "pthread_attr_init"
-.L296: .string "pthread_attr_setinheritsched"
-.L297: .string "pthread_attr_setschedparam"
-.L298: .string "pthread_attr_setschedpolicy"
-.L299: .string "pthread_attr_setstack"
-.L300: .string "pthread_attr_setstacksize"
-.L301: .string "pthread_barrier_destroy"
-.L302: .string "pthread_barrier_init"
-.L303: .string "pthread_barrier_wait"
-.L304: .string "pthread_barrierattr_destroy"
-.L305: .string "pthread_barrierattr_getpshared"
-.L306: .string "pthread_barrierattr_init"
-.L307: .string "pthread_barrierattr_setpshared"
-.L308: .string "pthread_cancel"
-.L309: .string "pthread_cleanup_pop"
-.L310: .string "pthread_cleanup_push"
-.L311: .string "pthread_cond_broadcast"
-.L312: .string "pthread_cond_destroy"
-.L313: .string "pthread_cond_init"
-.L314: .string "pthread_cond_signal"
-.L315: .string "pthread_cond_timedwait"
-.L316: .string "pthread_cond_wait"
-.L317: .string "pthread_condattr_destroy"
-.L318: .string "pthread_condattr_init"
-.L319: .string "pthread_create"
-.L320: .string "pthread_detach"
-.L321: .string "pthread_exit"
-.L322: .string "pthread_get_stackaddr_np"
-.L323: .string "pthread_get_stacksize_np"
-.L324: .string "pthread_getschedparam"
-.L325: .string "pthread_getspecific"
-.L326: .string "pthread_join"
-.L327: .string "pthread_key_create"
-.L328: .string "pthread_key_delete"
-.L329: .string "pthread_kill"
-.L330: .string "pthread_mutex_consistent"
-.L331: .string "pthread_mutex_destroy"
-.L332: .string "pthread_mutex_init"
-.L333: .string "pthread_mutex_lock"
-.L334: .string "pthread_mutex_timedlock"
-.L335: .string "pthread_mutex_trylock"
-.L336: .string "pthread_mutex_unlock"
-.L337: .string "pthread_mutexattr_destroy"
-.L338: .string "pthread_mutexattr_getprotocol"
-.L339: .string "pthread_mutexattr_getpshared"
-.L340: .string "pthread_mutexattr_getrobust"
-.L341: .string "pthread_mutexattr_gettype"
-.L342: .string "pthread_mutexattr_init"
-.L343: .string "pthread_mutexattr_setprotocol"
-.L344: .string "pthread_mutexattr_setpshared"
-.L345: .string "pthread_mutexattr_setrobust"
-.L346: .string "pthread_mutexattr_settype"
-.L347: .string "pthread_once"
-.L348: .string "pthread_rwlock_destroy"
-.L349: .string "pthread_rwlock_init"
-.L350: .string "pthread_rwlock_rdlock"
-.L351: .string "pthread_rwlock_timedrdlock"
-.L352: .string "pthread_rwlock_timedwrlock"
-.L353: .string "pthread_rwlock_tryrdlock"
-.L354: .string "pthread_rwlock_trywrlock"
-.L355: .string "pthread_rwlock_unlock"
-.L356: .string "pthread_rwlock_wrlock"
-.L357: .string "pthread_setcancelstate"
-.L358: .string "pthread_setcanceltype"
-.L359: .string "pthread_setschedparam"
-.L360: .string "pthread_setschedprio"
-.L361: .string "pthread_setspecific"
-.L362: .string "pthread_sigmask"
-.L363: .string "pthread_startup"
-.L364: .string "pthread_testcancel"
-.L365: .string "pthread_yield"
-.L366: .string "putenv"
-.L367: .string "puts"
-.L368: .string "pwrite"
-.L369: .string "qsort"
-.L370: .string "raise"
-.L371: .string "rand"
-.L372: .string "random"
-.L373: .string "read"
-.L374: .string "readdir"
-.L375: .string "readdir_r"
-.L376: .string "readv"
-.L377: .string "realloc"
-.L378: .string "recv"
-.L379: .string "recvfrom"
-.L380: .string "recvmsg"
-.L381: .string "remove"
-.L382: .string "rename"
-.L383: .string "rewinddir"
-.L384: .string "rint"
-.L385: .string "rintf"
-.L386: .string "rintl"
-.L387: .string "rmdir"
-.L388: .string "round"
-.L389: .string "roundf"
-.L390: .string "roundl"
-.L391: .string "scalbn"
-.L392: .string "scalbnf"
-.L393: .string "scanf"
-.L394: .string "seekdir"
-.L395: .string "select"
-.L396: .string "sem_destroy"
-.L397: .string "sem_getprotocol"
-.L398: .string "sem_getvalue"
-.L399: .string "sem_init"
-.L400: .string "sem_post"
-.L401: .string "sem_setprotocol"
-.L402: .string "sem_timedwait"
-.L403: .string "sem_trywait"
-.L404: .string "sem_wait"
-.L405: .string "send"
-.L406: .string "sendfile"
-.L407: .string "sendmsg"
-.L408: .string "sendto"
-.L409: .string "set_errno"
-.L410: .string "setbuf"
-.L411: .string "setenv"
-.L412: .string "sethostname"
-.L413: .string "setlocale"
-.L414: .string "setlogmask"
-.L415: .string "setsockopt"
-.L416: .string "settimeofday"
-.L417: .string "setvbuf"
-.L418: .string "shutdown"
-.L419: .string "sigaction"
-.L420: .string "sigaddset"
-.L421: .string "sigdelset"
-.L422: .string "sigemptyset"
-.L423: .string "sigfillset"
-.L424: .string "sighold"
-.L425: .string "sigignore"
-.L426: .string "sigismember"
-.L427: .string "signal"
-.L428: .string "sigpause"
-.L429: .string "sigpending"
-.L430: .string "sigprocmask"
-.L431: .string "sigqueue"
-.L432: .string "sigrelse"
-.L433: .string "sigset"
-.L434: .string "sigsuspend"
-.L435: .string "sigtimedwait"
-.L436: .string "sigwait"
-.L437: .string "sigwaitinfo"
-.L438: .string "sin"
-.L439: .string "sinf"
-.L440: .string "sinh"
-.L441: .string "sinhf"
-.L442: .string "sinhl"
-.L443: .string "sinl"
-.L444: .string "sleep"
-.L445: .string "snprintf"
-.L446: .string "socket"
-.L447: .string "sprintf"
-.L448: .string "sqrt"
-.L449: .string "sqrtf"
-.L450: .string "sqrtl"
-.L451: .string "srand"
-.L452: .string "sscanf"
-.L453: .string "stat"
-.L454: .string "statfs"
-.L455: .string "stpcpy"
-.L456: .string "stpncpy"
-.L457: .string "strcasecmp"
-.L458: .string "strcasestr"
-.L459: .string "strcat"
-.L460: .string "strchr"
-.L461: .string "strcmp"
-.L462: .string "strcoll"
-.L463: .string "strcpy"
-.L464: .string "strcspn"
-.L465: .string "strdup"
-.L466: .string "stream_semgive"
-.L467: .string "stream_semtake"
-.L468: .string "strerror"
-.L469: .string "strerror_r"
-.L470: .string "strftime"
-.L471: .string "strlen"
-.L472: .string "strncasecmp"
-.L473: .string "strncat"
-.L474: .string "strncmp"
-.L475: .string "strncpy"
-.L476: .string "strndup"
-.L477: .string "strnlen"
-.L478: .string "strpbrk"
-.L479: .string "strrchr"
-.L480: .string "strsep"
-.L481: .string "strsignal"
-.L482: .string "strspn"
-.L483: .string "strstr"
-.L484: .string "strtod"
-.L485: .string "strtof"
-.L486: .string "strtoimax"
-.L487: .string "strtok"
-.L488: .string "strtok_r"
-.L489: .string "strtol"
-.L490: .string "strtold"
-.L491: .string "strtoll"
-.L492: .string "strtoul"
-.L493: .string "strtoull"
-.L494: .string "strtoumax"
-.L495: .string "strxfrm"
-.L496: .string "swab"
-.L497: .string "sysconf"
-.L498: .string "syslog"
-.L499: .string "tan"
-.L500: .string "tanf"
-.L501: .string "tanh"
-.L502: .string "tanhf"
-.L503: .string "tanhl"
-.L504: .string "tanl"
-.L505: .string "tcdrain"
-.L506: .string "tcflow"
-.L507: .string "tcflush"
-.L508: .string "tcgetattr"
-.L509: .string "tcsetattr"
-.L510: .string "tea_decrypt"
-.L511: .string "tea_encrypt"
-.L512: .string "telldir"
-.L513: .string "tempnam"
-.L514: .string "tgamma"
-.L515: .string "time"
-.L516: .string "tmpnam"
-.L517: .string "trunc"
-.L518: .string "truncate"
-.L519: .string "truncf"
-.L520: .string "truncl"
-.L521: .string "uadd32x64"
-.L522: .string "uadd64"
-.L523: .string "ub32sqrtub16"
-.L524: .string "umul32"
-.L525: .string "umul32x64"
-.L526: .string "umul64"
-.L527: .string "uname"
-.L528: .string "ungetc"
-.L529: .string "unlink"
-.L530: .string "unsetenv"
-.L531: .string "usleep"
-.L532: .string "usub64"
-.L533: .string "usub64x32"
-.L534: .string "vasprintf"
-.L535: .string "vdprintf"
-.L536: .string "vfork"
-.L537: .string "vfprintf"
-.L538: .string "vfscanf"
-.L539: .string "vprintf"
-.L540: .string "vsnprintf"
-.L541: .string "vsprintf"
-.L542: .string "vsscanf"
-.L543: .string "vsyslog"
-.L544: .string "waitpid"
-.L545: .string "write"
-.L546: .string "writev"
-.L547: .string "xorshift128"
-.L548: .string "zalloc"
-       .size   globalNames, . - globalNames
-
-       .align  4
-       .global nGlobals
-       .type   nGlobals, "object"
-nGlobals:      
-       .word   549
-       .size   nGlobals, . - nGlobals
-
-       .global globalTable
-       .type   globalTable, "object"
-globalTable:
-       .word   .L0, _ZdlPvj
-       .word   .L1, __cos
-       .word   .L2, __cxa_pure_virtual
-       .word   .L3, __dso_handle
-       .word   .L4, __dtoa_engine
-       .word   .L5, __sin
-       .word   .L6, __swap_uint32
-       .word   .L7, __swap_uint64
-       .word   .L8, __ultoa_invert
-       .word   .L9, _exit
-       .word   .L10, abort
-       .word   .L11, abs
-       .word   .L12, accept
-       .word   .L13, access
-       .word   .L14, acos
-       .word   .L15, acosf
-       .word   .L16, acosh
-       .word   .L17, acoshf
-       .word   .L18, acoshl
-       .word   .L19, acosl
-       .word   .L20, add_file_action
-       .word   .L21, asin
-       .word   .L22, asinf
-       .word   .L23, asinh
-       .word   .L24, asinhf
-       .word   .L25, asinhl
-       .word   .L26, asinl
-       .word   .L27, asprintf
-       .word   .L28, atan
-       .word   .L29, atan2
-       .word   .L30, atan2f
-       .word   .L31, atan2l
-       .word   .L32, atanf
-       .word   .L33, atanh
-       .word   .L34, atanhf
-       .word   .L35, atanhl
-       .word   .L36, atanl
-       .word   .L37, b16atan2
-       .word   .L38, b16cos
-       .word   .L39, b16sin
-       .word   .L40, basename
-       .word   .L41, bind
-       .word   .L42, boardctl
-       .word   .L43, bsearch
-       .word   .L44, cabs
-       .word   .L45, cacheflush
-       .word   .L46, calloc
-       .word   .L47, cbrtf
-       .word   .L48, ceil
-       .word   .L49, ceilf
-       .word   .L50, ceill
-       .word   .L51, cfgetspeed
-       .word   .L52, cfmakeraw
-       .word   .L53, cfsetspeed
-       .word   .L54, chdir
-       .word   .L55, cimag
-       .word   .L56, clearenv
-       .word   .L57, clearerr
-       .word   .L58, clock
-       .word   .L59, close
-       .word   .L60, closedir
-       .word   .L61, connect
-       .word   .L62, copysign
-       .word   .L63, copysignf
-       .word   .L64, copysignl
-       .word   .L65, cos
-       .word   .L66, cosf
-       .word   .L67, cosh
-       .word   .L68, coshf
-       .word   .L69, coshl
-       .word   .L70, cosl
-       .word   .L71, crc16
-       .word   .L72, crc16part
-       .word   .L73, crc32
-       .word   .L74, crc32part
-       .word   .L75, crc64
-       .word   .L76, crc64part
-       .word   .L77, crc8
-       .word   .L78, crc8ccitt
-       .word   .L79, crc8part
-       .word   .L80, creal
-       .word   .L81, daemon
-       .word   .L82, difftime
-       .word   .L83, dirname
-       .word   .L84, div
-       .word   .L85, dlclose
-       .word   .L86, dlerror
-       .word   .L87, dlopen
-       .word   .L88, dlsym
-       .word   .L89, dlsymtab
-       .word   .L90, dns_add_nameserver
-       .word   .L91, dns_bind
-       .word   .L92, dns_find_answer
-       .word   .L93, dns_foreach_nameserver
-       .word   .L94, dns_initialize
-       .word   .L95, dns_notify_nameserver
-       .word   .L96, dns_query
-       .word   .L97, dns_register_notify
-       .word   .L98, dns_save_answer
-       .word   .L99, dns_semgive
-       .word   .L100, dns_semtake
-       .word   .L101, dns_unregister_notify
-       .word   .L102, dprintf
-       .word   .L103, dup
-       .word   .L104, dup2
-       .word   .L105, envpath_init
-       .word   .L106, envpath_next
-       .word   .L107, envpath_release
-       .word   .L108, erf
-       .word   .L109, erff
-       .word   .L110, erfl
-       .word   .L111, ether_ntoa
-       .word   .L112, exec
-       .word   .L113, exit
-       .word   .L114, exp
-       .word   .L115, expf
-       .word   .L116, expl
-       .word   .L117, explicit_bzero
-       .word   .L118, fabs
-       .word   .L119, fabsf
-       .word   .L120, fabsl
-       .word   .L121, fclose
-       .word   .L122, fcntl
-       .word   .L123, fdopen
-       .word   .L124, feof
-       .word   .L125, ferror
-       .word   .L126, fflush
-       .word   .L127, ffs
-       .word   .L128, ffsl
-       .word   .L129, ffsll
-       .word   .L130, fgetc
-       .word   .L131, fgetpos
-       .word   .L132, fgets
-       .word   .L133, fileno
-       .word   .L134, floor
-       .word   .L135, floorf
-       .word   .L136, floorl
-       .word   .L137, fls
-       .word   .L138, flsl
-       .word   .L139, flsll
-       .word   .L140, fma
-       .word   .L141, fmaf
-       .word   .L142, fmod
-       .word   .L143, fmodf
-       .word   .L144, fmodl
-       .word   .L145, fopen
-       .word   .L146, fprintf
-       .word   .L147, fputc
-       .word   .L148, fputs
-       .word   .L149, fread
-       .word   .L150, free
-       .word   .L151, freeaddrinfo
-       .word   .L152, freopen
-       .word   .L153, frexp
-       .word   .L154, frexpf
-       .word   .L155, frexpl
-       .word   .L156, fscanf
-       .word   .L157, fseek
-       .word   .L158, fsetpos
-       .word   .L159, fstat
-       .word   .L160, fstatfs
-       .word   .L161, fsync
-       .word   .L162, ftell
-       .word   .L163, ftruncate
-       .word   .L164, fwrite
-       .word   .L165, gai_strerror
-       .word   .L166, gamma
-       .word   .L167, getaddrinfo
-       .word   .L168, getcwd
-       .word   .L169, getenv
-       .word   .L170, gethostbyaddr
-       .word   .L171, gethostbyaddr_r
-       .word   .L172, gethostbyname
-       .word   .L173, gethostbyname_r
-       .word   .L174, gethostname
-       .word   .L175, getnameinfo
-       .word   .L176, getopt
-       .word   .L177, getoptargp
-       .word   .L178, getoptindp
-       .word   .L179, getoptoptp
-       .word   .L180, getpeername
-       .word   .L181, getpid
-       .word   .L182, getprotobyname
-       .word   .L183, getrandom
-       .word   .L184, gets
-       .word   .L185, gets_s
-       .word   .L186, getservbyname
-       .word   .L187, getservbyname_r
-       .word   .L188, getsockname
-       .word   .L189, getsockopt
-       .word   .L190, gettimeofday
-       .word   .L191, gmtime
-       .word   .L192, gmtime_r
-       .word   .L193, h_errno
-       .word   .L194, htonl
-       .word   .L195, htons
-       .word   .L196, hypot
-       .word   .L197, ilogb
-       .word   .L198, ilogbf
-       .word   .L199, imaxabs
-       .word   .L200, in6addr_any
-       .word   .L201, inet_addr
-       .word   .L202, inet_aton
-       .word   .L203, inet_ntoa
-       .word   .L204, inet_ntop
-       .word   .L205, inet_pton
-       .word   .L206, ioctl
-       .word   .L207, isatty
-       .word   .L208, itoa
-       .word   .L209, kill
-       .word   .L210, labs
-       .word   .L211, ldexp
-       .word   .L212, ldexpf
-       .word   .L213, ldexpl
-       .word   .L214, ldiv
-       .word   .L215, lgamma
-       .word   .L216, lgamma_r
-       .word   .L217, listen
-       .word   .L218, llabs
-       .word   .L219, lldiv
-       .word   .L220, localeconv
-       .word   .L221, log
-       .word   .L222, log10
-       .word   .L223, log10f
-       .word   .L224, log10l
-       .word   .L225, log2
-       .word   .L226, log2f
-       .word   .L227, log2l
-       .word   .L228, logf
-       .word   .L229, logl
-       .word   .L230, lseek
-       .word   .L231, malloc
-       .word   .L232, match
-       .word   .L233, meadow_mappings
-       .word   .L234, memalign
-       .word   .L235, memccpy
-       .word   .L236, memchr
-       .word   .L237, memcmp
-       .word   .L238, memcpy
-       .word   .L239, memmove
-       .word   .L240, memrchr
-       .word   .L241, memset
-       .word   .L242, mkdir
-       .word   .L243, mkfifo
-       .word   .L244, mkfifo2
-       .word   .L245, mkstemp
-       .word   .L246, mktemp
-       .word   .L247, mktime
-       .word   .L248, mmap
-       .word   .L249, modf
-       .word   .L250, modff
-       .word   .L251, modfl
-       .word   .L252, mono_main
-       .word   .L253, mono_should_run
-       .word   .L254, mount
-       .word   .L255, munmap
-       .word   .L256, nanosleep
-       .word   .L257, nrand
-       .word   .L258, ntohl
-       .word   .L259, ntohs
-       .word   .L260, open
-       .word   .L261, opendir
-       .word   .L262, optarg
-       .word   .L263, optind
-       .word   .L264, optopt
-       .word   .L265, perror
-       .word   .L266, pipe
-       .word   .L267, pipe2
-       .word   .L268, poll
-       .word   .L269, posix_spawnattr_dump
-       .word   .L270, posix_spawnattr_getflags
-       .word   .L271, posix_spawnattr_getschedparam
-       .word   .L272, posix_spawnattr_getschedpolicy
-       .word   .L273, posix_spawnattr_getsigmask
-       .word   .L274, posix_spawnattr_init
-       .word   .L275, posix_spawnattr_setflags
-       .word   .L276, posix_spawnattr_setschedparam
-       .word   .L277, posix_spawnattr_setschedpolicy
-       .word   .L278, posix_spawnattr_setsigmask
-       .word   .L279, pow
-       .word   .L280, powf
-       .word   .L281, powl
-       .word   .L282, ppoll
-       .word   .L283, prctl
-       .word   .L284, pread
-       .word   .L285, printf
-       .word   .L286, pselect
-       .word   .L287, psiginfo
-       .word   .L288, psignal
-       .word   .L289, pthread_attr_destroy
-       .word   .L290, pthread_attr_getinheritsched
-       .word   .L291, pthread_attr_getschedparam
-       .word   .L292, pthread_attr_getschedpolicy
-       .word   .L293, pthread_attr_getstack
-       .word   .L294, pthread_attr_getstacksize
-       .word   .L295, pthread_attr_init
-       .word   .L296, pthread_attr_setinheritsched
-       .word   .L297, pthread_attr_setschedparam
-       .word   .L298, pthread_attr_setschedpolicy
-       .word   .L299, pthread_attr_setstack
-       .word   .L300, pthread_attr_setstacksize
-       .word   .L301, pthread_barrier_destroy
-       .word   .L302, pthread_barrier_init
-       .word   .L303, pthread_barrier_wait
-       .word   .L304, pthread_barrierattr_destroy
-       .word   .L305, pthread_barrierattr_getpshared
-       .word   .L306, pthread_barrierattr_init
-       .word   .L307, pthread_barrierattr_setpshared
-       .word   .L308, pthread_cancel
-       .word   .L309, pthread_cleanup_pop
-       .word   .L310, pthread_cleanup_push
-       .word   .L311, pthread_cond_broadcast
-       .word   .L312, pthread_cond_destroy
-       .word   .L313, pthread_cond_init
-       .word   .L314, pthread_cond_signal
-       .word   .L315, pthread_cond_timedwait
-       .word   .L316, pthread_cond_wait
-       .word   .L317, pthread_condattr_destroy
-       .word   .L318, pthread_condattr_init
-       .word   .L319, pthread_create
-       .word   .L320, pthread_detach
-       .word   .L321, pthread_exit
-       .word   .L322, pthread_get_stackaddr_np
-       .word   .L323, pthread_get_stacksize_np
-       .word   .L324, pthread_getschedparam
-       .word   .L325, pthread_getspecific
-       .word   .L326, pthread_join
-       .word   .L327, pthread_key_create
-       .word   .L328, pthread_key_delete
-       .word   .L329, pthread_kill
-       .word   .L330, pthread_mutex_consistent
-       .word   .L331, pthread_mutex_destroy
-       .word   .L332, pthread_mutex_init
-       .word   .L333, pthread_mutex_lock
-       .word   .L334, pthread_mutex_timedlock
-       .word   .L335, pthread_mutex_trylock
-       .word   .L336, pthread_mutex_unlock
-       .word   .L337, pthread_mutexattr_destroy
-       .word   .L338, pthread_mutexattr_getprotocol
-       .word   .L339, pthread_mutexattr_getpshared
-       .word   .L340, pthread_mutexattr_getrobust
-       .word   .L341, pthread_mutexattr_gettype
-       .word   .L342, pthread_mutexattr_init
-       .word   .L343, pthread_mutexattr_setprotocol
-       .word   .L344, pthread_mutexattr_setpshared
-       .word   .L345, pthread_mutexattr_setrobust
-       .word   .L346, pthread_mutexattr_settype
-       .word   .L347, pthread_once
-       .word   .L348, pthread_rwlock_destroy
-       .word   .L349, pthread_rwlock_init
-       .word   .L350, pthread_rwlock_rdlock
-       .word   .L351, pthread_rwlock_timedrdlock
-       .word   .L352, pthread_rwlock_timedwrlock
-       .word   .L353, pthread_rwlock_tryrdlock
-       .word   .L354, pthread_rwlock_trywrlock
-       .word   .L355, pthread_rwlock_unlock
-       .word   .L356, pthread_rwlock_wrlock
-       .word   .L357, pthread_setcancelstate
-       .word   .L358, pthread_setcanceltype
-       .word   .L359, pthread_setschedparam
-       .word   .L360, pthread_setschedprio
-       .word   .L361, pthread_setspecific
-       .word   .L362, pthread_sigmask
-       .word   .L363, pthread_startup
-       .word   .L364, pthread_testcancel
-       .word   .L365, pthread_yield
-       .word   .L366, putenv
-       .word   .L367, puts
-       .word   .L368, pwrite
-       .word   .L369, qsort
-       .word   .L370, raise
-       .word   .L371, rand
-       .word   .L372, random
-       .word   .L373, read
-       .word   .L374, readdir
-       .word   .L375, readdir_r
-       .word   .L376, readv
-       .word   .L377, realloc
-       .word   .L378, recv
-       .word   .L379, recvfrom
-       .word   .L380, recvmsg
-       .word   .L381, remove
-       .word   .L382, rename
-       .word   .L383, rewinddir
-       .word   .L384, rint
-       .word   .L385, rintf
-       .word   .L386, rintl
-       .word   .L387, rmdir
-       .word   .L388, round
-       .word   .L389, roundf
-       .word   .L390, roundl
-       .word   .L391, scalbn
-       .word   .L392, scalbnf
-       .word   .L393, scanf
-       .word   .L394, seekdir
-       .word   .L395, select
-       .word   .L396, sem_destroy
-       .word   .L397, sem_getprotocol
-       .word   .L398, sem_getvalue
-       .word   .L399, sem_init
-       .word   .L400, sem_post
-       .word   .L401, sem_setprotocol
-       .word   .L402, sem_timedwait
-       .word   .L403, sem_trywait
-       .word   .L404, sem_wait
-       .word   .L405, send
-       .word   .L406, sendfile
-       .word   .L407, sendmsg
-       .word   .L408, sendto
-       .word   .L409, set_errno
-       .word   .L410, setbuf
-       .word   .L411, setenv
-       .word   .L412, sethostname
-       .word   .L413, setlocale
-       .word   .L414, setlogmask
-       .word   .L415, setsockopt
-       .word   .L416, settimeofday
-       .word   .L417, setvbuf
-       .word   .L418, shutdown
-       .word   .L419, sigaction
-       .word   .L420, sigaddset
-       .word   .L421, sigdelset
-       .word   .L422, sigemptyset
-       .word   .L423, sigfillset
-       .word   .L424, sighold
-       .word   .L425, sigignore
-       .word   .L426, sigismember
-       .word   .L427, signal
-       .word   .L428, sigpause
-       .word   .L429, sigpending
-       .word   .L430, sigprocmask
-       .word   .L431, sigqueue
-       .word   .L432, sigrelse
-       .word   .L433, sigset
-       .word   .L434, sigsuspend
-       .word   .L435, sigtimedwait
-       .word   .L436, sigwait
-       .word   .L437, sigwaitinfo
-       .word   .L438, sin
-       .word   .L439, sinf
-       .word   .L440, sinh
-       .word   .L441, sinhf
-       .word   .L442, sinhl
-       .word   .L443, sinl
-       .word   .L444, sleep
-       .word   .L445, snprintf
-       .word   .L446, socket
-       .word   .L447, sprintf
-       .word   .L448, sqrt
-       .word   .L449, sqrtf
-       .word   .L450, sqrtl
-       .word   .L451, srand
-       .word   .L452, sscanf
-       .word   .L453, stat
-       .word   .L454, statfs
-       .word   .L455, stpcpy
-       .word   .L456, stpncpy
-       .word   .L457, strcasecmp
-       .word   .L458, strcasestr
-       .word   .L459, strcat
-       .word   .L460, strchr
-       .word   .L461, strcmp
-       .word   .L462, strcoll
-       .word   .L463, strcpy
-       .word   .L464, strcspn
-       .word   .L465, strdup
-       .word   .L466, stream_semgive
-       .word   .L467, stream_semtake
-       .word   .L468, strerror
-       .word   .L469, strerror_r
-       .word   .L470, strftime
-       .word   .L471, strlen
-       .word   .L472, strncasecmp
-       .word   .L473, strncat
-       .word   .L474, strncmp
-       .word   .L475, strncpy
-       .word   .L476, strndup
-       .word   .L477, strnlen
-       .word   .L478, strpbrk
-       .word   .L479, strrchr
-       .word   .L480, strsep
-       .word   .L481, strsignal
-       .word   .L482, strspn
-       .word   .L483, strstr
-       .word   .L484, strtod
-       .word   .L485, strtof
-       .word   .L486, strtoimax
-       .word   .L487, strtok
-       .word   .L488, strtok_r
-       .word   .L489, strtol
-       .word   .L490, strtold
-       .word   .L491, strtoll
-       .word   .L492, strtoul
-       .word   .L493, strtoull
-       .word   .L494, strtoumax
-       .word   .L495, strxfrm
-       .word   .L496, swab
-       .word   .L497, sysconf
-       .word   .L498, syslog
-       .word   .L499, tan
-       .word   .L500, tanf
-       .word   .L501, tanh
-       .word   .L502, tanhf
-       .word   .L503, tanhl
-       .word   .L504, tanl
-       .word   .L505, tcdrain
-       .word   .L506, tcflow
-       .word   .L507, tcflush
-       .word   .L508, tcgetattr
-       .word   .L509, tcsetattr
-       .word   .L510, tea_decrypt
-       .word   .L511, tea_encrypt
-       .word   .L512, telldir
-       .word   .L513, tempnam
-       .word   .L514, tgamma
-       .word   .L515, time
-       .word   .L516, tmpnam
-       .word   .L517, trunc
-       .word   .L518, truncate
-       .word   .L519, truncf
-       .word   .L520, truncl
-       .word   .L521, uadd32x64
-       .word   .L522, uadd64
-       .word   .L523, ub32sqrtub16
-       .word   .L524, umul32
-       .word   .L525, umul32x64
-       .word   .L526, umul64
-       .word   .L527, uname
-       .word   .L528, ungetc
-       .word   .L529, unlink
-       .word   .L530, unsetenv
-       .word   .L531, usleep
-       .word   .L532, usub64
-       .word   .L533, usub64x32
-       .word   .L534, vasprintf
-       .word   .L535, vdprintf
-       .word   .L536, vfork
-       .word   .L537, vfprintf
-       .word   .L538, vfscanf
-       .word   .L539, vprintf
-       .word   .L540, vsnprintf
-       .word   .L541, vsprintf
-       .word   .L542, vsscanf
-       .word   .L543, vsyslog
-       .word   .L544, waitpid
-       .word   .L545, write
-       .word   .L546, writev
-       .word   .L547, xorshift128
-       .word   .L548, zalloc
-       .size   globalTable, . - globalTable
diff --git a/libs/libc/modlib/modlib_x64_globals.S 
b/libs/libc/modlib/modlib_x64_globals.S
deleted file mode 100644
index c222918417..0000000000
--- a/libs/libc/modlib/modlib_x64_globals.S
+++ /dev/null
@@ -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

Reply via email to