Reduce build graph by another 14 percent

That's a 37% reduction total from what it was on 2022-05-23.
This commit is contained in:
Justine Tunney 2022-08-17 19:56:54 -07:00
parent c2211c9e63
commit 8e176fb026
4029 changed files with 4620 additions and 4675 deletions

View file

@ -85,9 +85,7 @@ o/$(MODE)/ape/ape-no-modify-self.o: \
libc/elf/def.h \
libc/intrin/asancodes.h \
libc/macho.internal.h \
libc/macros-cpp.internal.inc \
libc/macros.internal.h \
libc/macros.internal.inc \
libc/nexgen32e/uart.internal.h \
libc/nexgen32e/vidya.internal.h \
libc/nt/pedef.internal.h \
@ -113,9 +111,7 @@ o/$(MODE)/ape/ape-copy-self.o: \
libc/elf/def.h \
libc/intrin/asancodes.h \
libc/macho.internal.h \
libc/macros-cpp.internal.inc \
libc/macros.internal.h \
libc/macros.internal.inc \
libc/nexgen32e/uart.internal.h \
libc/nexgen32e/vidya.internal.h \
libc/nt/pedef.internal.h \

View file

@ -16,10 +16,7 @@
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
*/
#include "libc/mem/reverse.internal.h"
#include "libc/assert.h"
#include "libc/intrin/likely.h"
#include "libc/intrin/weaken.h"
#include "libc/calls/calls.h"
#include "libc/calls/state.internal.h"
#include "libc/calls/strace.internal.h"
@ -27,12 +24,13 @@
#include "libc/dce.h"
#include "libc/intrin/asan.internal.h"
#include "libc/intrin/asancodes.h"
#include "libc/intrin/cmpxchg.h"
#include "libc/intrin/kprintf.h"
#include "libc/intrin/likely.h"
#include "libc/intrin/lockcmpxchg.h"
#include "libc/intrin/nomultics.internal.h"
#include "libc/intrin/pthread.h"
#include "libc/intrin/spinlock.h"
#include "libc/intrin/weaken.h"
#include "libc/log/backtrace.internal.h"
#include "libc/log/internal.h"
#include "libc/log/libfatal.internal.h"
@ -40,6 +38,7 @@
#include "libc/macros.internal.h"
#include "libc/mem/hook/hook.internal.h"
#include "libc/mem/mem.h"
#include "libc/mem/reverse.internal.h"
#include "libc/nexgen32e/gc.internal.h"
#include "libc/nexgen32e/stackframe.h"
#include "libc/nt/enum/version.h"

View file

@ -4,7 +4,6 @@
#include "libc/dce.h"
#include "libc/macros.internal.h"
#include "libc/nexgen32e/bsr.h"
#include "libc/nt/process.h"
#include "libc/nt/runtime.h"
#include "libc/sysv/consts/nr.h"
#if !(__ASSEMBLER__ + __LINKER__ + 0)
@ -105,14 +104,6 @@ forceinline int __sysv_getpid(void) {
return ax;
}
forceinline int __getpid(void) {
if (!IsWindows()) {
return __sysv_getpid();
} else {
return GetCurrentProcessId();
}
}
forceinline ssize_t __write(const void *p, size_t n) {
uint32_t wrote;
if (!IsWindows()) {

View file

@ -1,200 +0,0 @@
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-
│vi: set et ft=asm ts=8 sw=8 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
Copyright 2020 Justine Alexandra Roberts Tunney
Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted, provided that the
above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
╚─────────────────────────────────────────────────────────────────────────────*/
#include "libc/intrin/asancodes.h"
#include "ape/relocations.h"
/* clang-format off */
#if __MNO_VZEROUPPER__ + 0
#define vzeroupper
#endif
// Begins definition of frameless function that calls no functions.
.macro .leafprologue
#if !(defined(TINY) && !defined(__PG__))
push %rbp
mov %rsp,%rbp
#endif
.endm
// Ends definition of frameless function that calls no functions.
.macro .leafepilogue
#if !(defined(TINY) && !defined(__PG__))
pop %rbp
#endif
ret
.endm
// Good alignment for functions where alignment actually helps.
// @note 16-byte
.macro .alignfunc
#ifndef __OPTIMIZE_SIZE__
.p2align 4
#endif
.endm
// Good alignment for loops where alignment actually helps.
// @note 16-byte if <10 padding otherwise 8-byte
.macro .alignloop
#ifndef __OPTIMIZE_SIZE__
.p2align 4,,10
.p2align 4
#endif
.endm
// Loads Effective Address
// Supporting security blankets
.macro plea symbol:req reg64:req reg32:req
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
lea \symbol(%rip),\reg64
#else
mov $\symbol,\reg32
#endif
.endm
// Loads Effective Address to Stack
// Supporting security blankets
.macro pshaddr symbol:req
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
push $IMAGE_BASE_VIRTUAL+RVA(\symbol)(%rip),\reg64
#else
push $\symbol
#endif
.endm
// TODO(jart): delete
// Loads Effective Address
// Supporting security blankets
.macro ezlea symbol:req reg:req
#if __pic__ + __pie__ + __code_model_medium__ + __code_model_large__ + 0 > 1
// lea \symbol(%rip),%r\reg
mov $\symbol,%e\reg
#else
mov $\symbol,%e\reg
#endif
.endm
.macro farcall symbol:req
.type \symbol,@function
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
call *\symbol\()@gotpcrel(%rip)
#else
call \symbol\()@plt
#endif
.endm
// Documents unreachable assembly code.
.macro .unreachable
#ifndef NDEBUG
ud2 # crash if contract is broken
#elif defined(__FNO_OMIT_FRAME_POINTER__)
nop # avoid noreturn tail call backtrace ambiguity
#endif
.endm
// Inserts profiling hook in prologue if cc wants it.
//
// Cosmopolitan does this in a slightly different way from normal
// GNU toolchains. We always use the -mnop-mcount behavior, since
// the runtime is able to morph the binary at runtime. It is good
// since we can put hooks for profiling and function tracing into
// most builds, without any impact on performance.
//
// @cost ≥0.3 cycles, 5 bytes
// @see build/compile
.macro .profilable
#ifdef __PG__
1382:
#if defined(__MFENTRY__)
call __fentry__
#elif defined(__PIC__) || defined(__PIE__)
// nopw 0x00(%rax,%rax,1)
.byte 0x66,0x0f,0x1f,0x44,0x00,0x00
#else
// nopl 0x00(%rax,%rax,1)
.byte 0x0f,0x1f,0x44,0x00,0x00
#endif
#endif
.endm
// Pushes RVA on stack of linktime mergeable string literal.
// @see popstr
.macro pushstr text
.section .rodata.str1.1,"aSM",@progbits,1
.Lstr\@: .asciz "\text"
.endobj .Lstr\@
.previous
push $.Lstr\@ - IMAGE_BASE_VIRTUAL
.endm
// Pops off stack string address.
// @see pushstr
.macro popstr dest:req
addl $IMAGE_BASE_VIRTUAL,(%rsp)
pop \dest
.endm
// Loads address of linktime mergeable string literal into register.
.macro loadstr text:req reg:req regsz bias=0
.section .rodata.str1.1,"aSM",@progbits,1
.type .Lstr\@,@object
.Lstr\@: .asciz "\text"
.Lstr\@.size = .-.Lstr\@ - 1
.size .Lstr\@,.-.Lstr\@
.previous
ezlea .Lstr\@,\reg
.ifnb \regsz
#ifdef __OPTIMIZE_SIZE__
.if .Lstr\@.size + \bias < 128
pushpop .Lstr\@.size,%r\regsz
.else
mov $.Lstr\@.size,%e\regsz
.endif
#else
mov $.Lstr\@.size,%e\regsz
#endif
.endif
.endm
.macro .poison name:req kind:req
#ifdef __SANITIZE_ADDRESS__
2323: .quad 0
.init.start 304,"_init_\name\()_poison_\@"
push %rdi
push %rsi
ezlea 2323b,di
mov $8,%esi
mov $\kind,%edx
call __asan_poison
pop %rsi
pop %rdi
.init.end 304,"_init_\name\()_poison_\@"
#endif
.endm
.macro .underrun
#ifdef __SANITIZE_ADDRESS__
.poison __BASE_FILE__, kAsanGlobalUnderrun
#endif
.endm
.macro .overrun
#ifdef __SANITIZE_ADDRESS__
.poison __BASE_FILE__, kAsanGlobalUnderrun
#endif
.endm

View file

@ -34,7 +34,507 @@
#define __STRINGIFY(A) #A
#define __PASTE(A, B) A##B
#ifdef __ASSEMBLER__
#include "libc/macros-cpp.internal.inc"
#include "libc/macros.internal.inc"
// clang-format off
#if __MNO_VZEROUPPER__ + 0
#define vzeroupper
#endif
// Shorthand notation for widely-acknowledged sections.
.macro .rodata
.section .rodata,"a",@progbits
.endm
.macro .init
.section .init,"ax",@progbits
.endm
.macro .real
.section .text.real,"ax",@progbits
.endm
.macro .head
.section .text.head,"ax",@progbits
.endm
.macro .text.startup
.section .text.startup,"ax",@progbits
.endm
.macro .text.exit
.section .text.exit,"ax",@progbits
.endm
.macro .firstclass
.section .text.hot,"ax",@progbits
.endm
.macro .text.unlikely
.section .text.unlikely,"ax",@progbits
.endm
.macro .text.likely
.section .text.hot,"ax",@progbits
.endm
.macro .text.modernity
.section .text.modernity,"ax",@progbits
.align 16
.endm
.macro .text.antiquity
.section .text.antiquity,"ax",@progbits
.endm
.macro .text.hot
.section .text.hot,"ax",@progbits
.endm
.macro .preinit_array
.section .preinit_array,"a",@init_array
.endm
.macro .init_array
.section .init_array,"a",@init_array
.endm
.macro .text.windows
.section .text.windows,"ax",@progbits
.endm
// Mergeable numeric constant sections.
//
// @note linker de-dupes item/values across whole compile
// @note therefore item/values are reordered w.r.t. link order
// @note therefore no section relative addressing
.macro .rodata.cst4
.section .rodata.cst4,"aM",@progbits,4
.align 4
.endm
.macro .rodata.cst8
.section .rodata.cst8,"aM",@progbits,8
.align 8
.endm
.macro .rodata.cst16
.section .rodata.cst16,"aM",@progbits,16
.align 16
.endm
.macro .rodata.cst32
.section .rodata.cst32,"aM",@progbits,32
.align 32
.endm
.macro .rodata.cst64
.section .rodata.cst64,"aM",@progbits,64
.align 64
.endm
.macro .tdata
.section .tdata,"awT",@progbits
.align 4
.endm
.macro .tbss
.section .tdata,"awT",@nobits
.align 4
.endm
// Mergeable NUL-terminated UTF-8 string constant section.
//
// @note linker de-dupes C strings here across whole compile
// @note therefore item/values are reordered w.r.t. link order
// @note therefore no section relative addressing
.macro .rodata.str1.1
.section .rodata.str1.1,"aMS",@progbits,1
.align 1
.endm
// Locates unreferenced code invulnerable to --gc-sections.
.macro .keep.text
.section .keep.text,"ax",@progbits
.endm
// Flags code as only allowed for testing purposes.
.macro .testonly
.section .test,"ax",@progbits
.endm
// Makes code runnable while code morphing.
.macro .privileged
.section .privileged,"ax",@progbits
.endm
// Loads address of errno into %rcx
.macro .errno
call __errno_location
.endm
// Post-Initialization Read-Only (PIRO) BSS section.
// @param ss is an optional string, for control image locality
.macro .piro ss
.ifnb \ss
.section .piro.sort.bss.\ss,"aw",@nobits
.else
.section .piro.bss,"aw",@nobits
.endif
.endm
// Helpers for Cosmopolitan _init() amalgamation magic.
// @param name should be consistent across macros for a module
// @see libc/runtime/_init.S
.macro .initro number:req name:req
.section ".initro.\number\().\name","a",@progbits
.align 8
.endm
.macro .initbss number:req name:req
.section ".piro.bss.init.2.\number\().\name","aw",@nobits
.align 8
.endm
.macro .init.start number:req name:req
.section ".init.\number\().\name","ax",@progbits
"\name":
.endm
.macro .init.end number:req name:req bnd=globl vis
.endfn "\name",\bnd,\vis
.previous
.endm
// Declares alternative implementation of function.
// @param implement e.g. tinymath_pow
// @param canonical e.g. pow
.macro .alias implement:req canonical:req
.equ \canonical,\implement
.weak \canonical
.endm
// Ends function definition.
// @cost saves 1-3 lines of code
.macro .endfn name:req bnd vis
.size "\name",.-"\name"
.type "\name",@function
.ifnb \bnd
.\bnd "\name"
.endif
.ifnb \vis
.\vis "\name"
.endif
.endm
// Ends variable definition.
// @cost saves 1-3 lines of code
.macro .endobj name:req bnd vis
.size "\name",.-"\name"
.type "\name",@object
.ifnb \bnd
.\bnd "\name"
.endif
.ifnb \vis
.\vis "\name"
.endif
.endm
// LOOP Instruction Replacement.
.macro .loop label:req
.byte 0x83
.byte 0xe9
.byte 0x01
jnz \label
.endm
// Pushes CONSTEXPR ∈ [-128,127].
// @note assembler is wrong for non-literal constexprs
.macro pushb x:req
.byte 0x6a
.byte \x
.endm
// Sign-extends CONSTEXPR ∈ [-128,127] to REGISTER.
// @cost ≥1 cycles, -2 bytes
.macro pushpop constexpr:req register:req
pushb \constexpr
pop \register
.endm
// Moves REGISTER to REGISTER.
// @cost ≥1 cycles, -1 REX byte
.macro movpp src:req dest:req
push \src
pop \dest
.endm
// Declares optional function.
.macro .optfn fn:req
.globl "\fn"
.weak "\fn"
.equ "\fn",missingno
.type "\fn",@function
.endm
// Embeds fixed-width zero-filled string table.
// @note zero-padded ≠ nul-terminated
.macro .fxstr width head rest:vararg
.ifnb \head
0: .ascii "\head"
.org 0b+\width
.fxstr \width,\rest
.endif
.endm
// Embeds Fixed-Width Zero-Padded String.
// @note .fxstr is better
.macro .ascin str:req fieldsize:req
1347: .ascii "\str"
.org 1347b+\fieldsize,0x00
.endm
// Marks symbols as object en-masse.
// @note zero-padded ≠ nul-terminated
.macro .object symbol rest:vararg
.ifnb \symbol
.type \symbol,@object
.object \rest
.endif
.endm
// Pads function prologue unconditionally for runtime hooking.
// @cost ≥0.3 cycles, 5 bytes
// @see .profilable
.macro .hookable
.byte 0x0f
.byte 0x1f
.byte 0x44
.byte 0x00
.byte 0x00
.endm
// Puts initialized data in uninitialized data section.
.macro .bsdata name:req expr:req bnd vis
.section ".initbss.300._init_\name","aw",@nobits
"\name":
.quad 0
.endobj "\name",\bnd,\vis
.previous
.section ".initro.300._init_\name","a",@progbits
.quad \expr
.previous
.section ".init.300._init_\name","ax",@progbits
"_init_\name":
movsq
.endfn "_init_\name"
.previous
.endm
// ICE Breakpoint.
// Modern gas forgot this but objdump knows
// @mode long,legacy,real
.macro icebp
.byte 0xF1
.endm
.macro int1
icebp
.endm
// Sets breakpoint for software debugger.
// @mode long,legacy,real
.macro .softicebp
.byte 0x53 # push bx
.byte 0x87 # xchg bx,bx (bochs breakpoint)
.byte 0xdb
.byte 0x5b # pop bx
.byte 0x66 # xchg ax,ax (microsoft breakpoint)
.byte 0x90
int3 # gdb breakpoint
.endm
// Assembles Intel Official 4-Byte NOP.
.macro fatnop4
.byte 0x0f,0x1f,0x40,0x00
.endm
// Pulls unrelated module into linkage.
//
// In order for this technique to work with --gc-sections, another
// module somewhere might want to weakly reference whats yoinked.
.macro .yoink symbol:req
.section .yoink
nopl "\symbol"(%rip)
.previous
.endm
// Calls Windows function.
//
// @param cx,dx,r8,r9,stack
// @return ax
// @clob ax,cx,dx,r8-r11
.macro ntcall symbol:req
sub $32,%rsp
call *\symbol(%rip)
add $32,%rsp
.endm
// Custom emulator instruction for bottom stack frame.
.macro bofram endfunc:req
.byte 0x0f,0x1f,0105,\endfunc-. # nopl disp8(%rbp)
.endm
// Begins definition of frameless function that calls no functions.
.macro .leafprologue
#if !(defined(TINY) && !defined(__PG__))
push %rbp
mov %rsp,%rbp
#endif
.endm
// Ends definition of frameless function that calls no functions.
.macro .leafepilogue
#if !(defined(TINY) && !defined(__PG__))
pop %rbp
#endif
ret
.endm
// Good alignment for functions where alignment actually helps.
// @note 16-byte
.macro .alignfunc
#ifndef __OPTIMIZE_SIZE__
.p2align 4
#endif
.endm
// Good alignment for loops where alignment actually helps.
// @note 16-byte if <10 padding otherwise 8-byte
.macro .alignloop
#ifndef __OPTIMIZE_SIZE__
.p2align 4,,10
.p2align 4
#endif
.endm
// Loads Effective Address
// Supporting security blankets
.macro plea symbol:req reg64:req reg32:req
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
lea \symbol(%rip),\reg64
#else
mov $\symbol,\reg32
#endif
.endm
// Loads Effective Address to Stack
// Supporting security blankets
.macro pshaddr symbol:req
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
push $IMAGE_BASE_VIRTUAL+RVA(\symbol)(%rip),\reg64
#else
push $\symbol
#endif
.endm
// TODO(jart): delete
// Loads Effective Address
// Supporting security blankets
.macro ezlea symbol:req reg:req
#if __pic__ + __pie__ + __code_model_medium__ + __code_model_large__ + 0 > 1
// lea \symbol(%rip),%r\reg
mov $\symbol,%e\reg
#else
mov $\symbol,%e\reg
#endif
.endm
.macro farcall symbol:req
.type \symbol,@function
#if __PIC__ + __PIE__ + __code_model_medium__ + __code_model_large__ + 0 > 1
call *\symbol\()@gotpcrel(%rip)
#else
call \symbol\()@plt
#endif
.endm
// Documents unreachable assembly code.
.macro .unreachable
#ifndef NDEBUG
ud2 # crash if contract is broken
#elif defined(__FNO_OMIT_FRAME_POINTER__)
nop # avoid noreturn tail call backtrace ambiguity
#endif
.endm
// Inserts profiling hook in prologue if cc wants it.
//
// Cosmopolitan does this in a slightly different way from normal
// GNU toolchains. We always use the -mnop-mcount behavior, since
// the runtime is able to morph the binary at runtime. It is good
// since we can put hooks for profiling and function tracing into
// most builds, without any impact on performance.
//
// @cost ≥0.3 cycles, 5 bytes
// @see build/compile
.macro .profilable
#ifdef __PG__
1382:
#if defined(__MFENTRY__)
call __fentry__
#elif defined(__PIC__) || defined(__PIE__)
// nopw 0x00(%rax,%rax,1)
.byte 0x66,0x0f,0x1f,0x44,0x00,0x00
#else
// nopl 0x00(%rax,%rax,1)
.byte 0x0f,0x1f,0x44,0x00,0x00
#endif
#endif
.endm
// Pushes RVA on stack of linktime mergeable string literal.
// @see popstr
.macro pushstr text
.section .rodata.str1.1,"aSM",@progbits,1
.Lstr\@: .asciz "\text"
.endobj .Lstr\@
.previous
push $.Lstr\@ - IMAGE_BASE_VIRTUAL
.endm
// Pops off stack string address.
// @see pushstr
.macro popstr dest:req
addl $IMAGE_BASE_VIRTUAL,(%rsp)
pop \dest
.endm
// Loads address of linktime mergeable string literal into register.
.macro loadstr text:req reg:req regsz bias=0
.section .rodata.str1.1,"aSM",@progbits,1
.type .Lstr\@,@object
.Lstr\@: .asciz "\text"
.Lstr\@.size = .-.Lstr\@ - 1
.size .Lstr\@,.-.Lstr\@
.previous
ezlea .Lstr\@,\reg
.ifnb \regsz
#ifdef __OPTIMIZE_SIZE__
.if .Lstr\@.size + \bias < 128
pushpop .Lstr\@.size,%r\regsz
.else
mov $.Lstr\@.size,%e\regsz
.endif
#else
mov $.Lstr\@.size,%e\regsz
#endif
.endif
.endm
.macro .poison name:req kind:req
#ifdef __SANITIZE_ADDRESS__
2323: .quad 0
.init.start 304,"_init_\name\()_poison_\@"
push %rdi
push %rsi
ezlea 2323b,di
mov $8,%esi
mov $\kind,%edx
call __asan_poison
pop %rsi
pop %rdi
.init.end 304,"_init_\name\()_poison_\@"
#endif
.endm
.macro .underrun
#ifdef __SANITIZE_ADDRESS__
.poison __BASE_FILE__, kAsanGlobalUnderrun
#endif
.endm
.macro .overrun
#ifdef __SANITIZE_ADDRESS__
.poison __BASE_FILE__, kAsanGlobalUnderrun
#endif
.endm
// clang-format on
#endif /* __ASSEMBLER__ */
#endif /* COSMOPOLITAN_LIBC_MACROS_H_ */

View file

@ -1,334 +0,0 @@
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-
│vi: set et ft=asm ts=8 sw=8 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
Copyright 2020 Justine Alexandra Roberts Tunney
Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted, provided that the
above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
╚─────────────────────────────────────────────────────────────────────────────*/
// Shorthand notation for widely-acknowledged sections.
.macro .rodata
.section .rodata,"a",@progbits
.endm
.macro .init
.section .init,"ax",@progbits
.endm
.macro .real
.section .text.real,"ax",@progbits
.endm
.macro .head
.section .text.head,"ax",@progbits
.endm
.macro .text.startup
.section .text.startup,"ax",@progbits
.endm
.macro .text.exit
.section .text.exit,"ax",@progbits
.endm
.macro .firstclass
.section .text.hot,"ax",@progbits
.endm
.macro .text.unlikely
.section .text.unlikely,"ax",@progbits
.endm
.macro .text.likely
.section .text.hot,"ax",@progbits
.endm
.macro .text.modernity
.section .text.modernity,"ax",@progbits
.align 16
.endm
.macro .text.antiquity
.section .text.antiquity,"ax",@progbits
.endm
.macro .text.hot
.section .text.hot,"ax",@progbits
.endm
.macro .preinit_array
.section .preinit_array,"a",@init_array
.endm
.macro .init_array
.section .init_array,"a",@init_array
.endm
.macro .text.windows
.section .text.windows,"ax",@progbits
.endm
// Mergeable numeric constant sections.
//
// @note linker de-dupes item/values across whole compile
// @note therefore item/values are reordered w.r.t. link order
// @note therefore no section relative addressing
.macro .rodata.cst4
.section .rodata.cst4,"aM",@progbits,4
.align 4
.endm
.macro .rodata.cst8
.section .rodata.cst8,"aM",@progbits,8
.align 8
.endm
.macro .rodata.cst16
.section .rodata.cst16,"aM",@progbits,16
.align 16
.endm
.macro .rodata.cst32
.section .rodata.cst32,"aM",@progbits,32
.align 32
.endm
.macro .rodata.cst64
.section .rodata.cst64,"aM",@progbits,64
.align 64
.endm
.macro .tdata
.section .tdata,"awT",@progbits
.align 4
.endm
.macro .tbss
.section .tdata,"awT",@nobits
.align 4
.endm
// Mergeable NUL-terminated UTF-8 string constant section.
//
// @note linker de-dupes C strings here across whole compile
// @note therefore item/values are reordered w.r.t. link order
// @note therefore no section relative addressing
.macro .rodata.str1.1
.section .rodata.str1.1,"aMS",@progbits,1
.align 1
.endm
// Locates unreferenced code invulnerable to --gc-sections.
.macro .keep.text
.section .keep.text,"ax",@progbits
.endm
// Flags code as only allowed for testing purposes.
.macro .testonly
.section .test,"ax",@progbits
.endm
// Makes code runnable while code morphing.
.macro .privileged
.section .privileged,"ax",@progbits
.endm
// Loads address of errno into %rcx
.macro .errno
call __errno_location
.endm
// Post-Initialization Read-Only (PIRO) BSS section.
// @param ss is an optional string, for control image locality
.macro .piro ss
.ifnb \ss
.section .piro.sort.bss.\ss,"aw",@nobits
.else
.section .piro.bss,"aw",@nobits
.endif
.endm
// Helpers for Cosmopolitan _init() amalgamation magic.
// @param name should be consistent across macros for a module
// @see libc/runtime/_init.S
.macro .initro number:req name:req
.section ".initro.\number\().\name","a",@progbits
.align 8
.endm
.macro .initbss number:req name:req
.section ".piro.bss.init.2.\number\().\name","aw",@nobits
.align 8
.endm
.macro .init.start number:req name:req
.section ".init.\number\().\name","ax",@progbits
"\name":
.endm
.macro .init.end number:req name:req bnd=globl vis
.endfn "\name",\bnd,\vis
.previous
.endm
// Declares alternative implementation of function.
// @param implement e.g. tinymath_pow
// @param canonical e.g. pow
.macro .alias implement:req canonical:req
.equ \canonical,\implement
.weak \canonical
.endm
// Ends function definition.
// @cost saves 1-3 lines of code
.macro .endfn name:req bnd vis
.size "\name",.-"\name"
.type "\name",@function
.ifnb \bnd
.\bnd "\name"
.endif
.ifnb \vis
.\vis "\name"
.endif
.endm
// Ends variable definition.
// @cost saves 1-3 lines of code
.macro .endobj name:req bnd vis
.size "\name",.-"\name"
.type "\name",@object
.ifnb \bnd
.\bnd "\name"
.endif
.ifnb \vis
.\vis "\name"
.endif
.endm
// LOOP Instruction Replacement.
.macro .loop label:req
.byte 0x83,0xe9,0x01 # sub §1,%ecx
jnz \label
.endm
// Pushes CONSTEXPR ∈ [-128,127].
// @note assembler is wrong for non-literal constexprs
.macro pushb x:req
.byte 0x6a,\x
.endm
// Sign-extends CONSTEXPR ∈ [-128,127] to REGISTER.
// @cost ≥1 cycles, -2 bytes
.macro pushpop constexpr:req register:req
pushb \constexpr
pop \register
.endm
// Moves REGISTER to REGISTER.
// @cost ≥1 cycles, -1 REX byte
.macro movpp src:req dest:req
push \src
pop \dest
.endm
// Declares optional function.
.macro .optfn fn:req
.globl "\fn"
.weak "\fn"
.equ "\fn",missingno
.type "\fn",@function
.endm
// Embeds fixed-width zero-filled string table.
// @note zero-padded ≠ nul-terminated
.macro .fxstr width head rest:vararg
.ifnb \head
0: .ascii "\head"
.org 0b+\width
.fxstr \width,\rest
.endif
.endm
// Embeds Fixed-Width Zero-Padded String.
// @note .fxstr is better
.macro .ascin str:req fieldsize:req
1347: .ascii "\str"
.org 1347b+\fieldsize,0x00
.endm
// Marks symbols as object en-masse.
// @note zero-padded ≠ nul-terminated
.macro .object symbol rest:vararg
.ifnb \symbol
.type \symbol,@object
.object \rest
.endif
.endm
// Pads function prologue unconditionally for runtime hooking.
// @cost ≥0.3 cycles, 5 bytes
// @see .profilable
.macro .hookable
.byte 0x0f,0x1f,0x44,0x00,0x00
.endm
// Puts initialized data in uninitialized data section.
.macro .bsdata name:req expr:req bnd vis
.section ".initbss.300._init_\name","aw",@nobits
"\name":
.quad 0
.endobj "\name",\bnd,\vis
.previous
.section ".initro.300._init_\name","a",@progbits
.quad \expr
.previous
.section ".init.300._init_\name","ax",@progbits
"_init_\name":
movsq
.endfn "_init_\name"
.previous
.endm
// ICE Breakpoint.
// Modern gas forgot this but objdump knows
// @mode long,legacy,real
.macro icebp
.byte 0xF1
.endm
.macro int1
icebp
.endm
// Sets breakpoint for software debugger.
// @mode long,legacy,real
.macro .softicebp
.byte 0x53 # push bx
.byte 0x87,0xdb # xchg bx,bx (bochs breakpoint)
.byte 0x5b # pop bx
.byte 0x66,0x90 # xchg ax,ax (microsoft breakpoint)
int3 # gdb breakpoint
.endm
// Assembles Intel Official 4-Byte NOP.
.macro fatnop4
.byte 0x0f,0x1f,0x40,0x00
.endm
// Pulls unrelated module into linkage.
//
// In order for this technique to work with --gc-sections, another
// module somewhere might want to weakly reference whats yoinked.
.macro yoink symbol:req
.section .yoink
nopl "\symbol"(%rip)
.previous
.endm
.macro .yoink symbol:req
.section .yoink
nopl "\symbol"(%rip)
.previous
.endm
// Calls Windows function.
//
// @param cx,dx,r8,r9,stack
// @return ax
// @clob ax,cx,dx,r8-r11
.macro ntcall symbol:req
sub $32,%rsp
call *\symbol(%rip)
add $32,%rsp
.endm
// Custom emulator instruction for bottom stack frame.
.macro bofram endfunc:req
.byte 0x0f,0x1f,0105,\endfunc-. # nopl disp8(%rbp)
.endm

View file

@ -28,5 +28,5 @@ hook_calloc:
.hidden dlcalloc
ezlea dlcalloc,ax
stosq
yoink free
.yoink free
.init.end 202,_init_calloc

View file

@ -27,7 +27,7 @@ hook_free:
.init.start 202,_init_free
ezlea dlfree,ax
stosq
yoink realloc
.yoink realloc
.init.end 202,_init_free
.hidden dlfree

View file

@ -28,5 +28,5 @@ hook_malloc:
.hidden dlmalloc
ezlea dlmalloc,ax
stosq
yoink free
.yoink free
.init.end 202,_init_malloc

View file

@ -28,5 +28,5 @@ hook_malloc_trim:
.hidden dlmalloc_trim
ezlea dlmalloc_trim,ax
stosq
yoink free
.yoink free
.init.end 202,_init_malloc_trim

View file

@ -28,5 +28,5 @@ hook_memalign:
.hidden dlmemalign
ezlea dlmemalign,ax
stosq
yoink free
.yoink free
.init.end 202,_init_memalign

View file

@ -28,5 +28,5 @@ hook_realloc:
.hidden dlrealloc
ezlea dlrealloc,ax
stosq
yoink free
.yoink free
.init.end 202,_init_realloc

View file

@ -28,5 +28,5 @@ hook_realloc_in_place:
.hidden dlrealloc_in_place
ezlea dlrealloc_in_place,ax
stosq
yoink free
.yoink free
.init.end 202,_init_realloc_in_place

View file

@ -142,8 +142,6 @@ o/libc/nt/ntdllimport.inc: \
ape/relocations.h \
libc/nt/ntdllimport.h \
libc/macros.internal.h \
libc/macros.internal.inc \
libc/macros-cpp.internal.inc \
libc/intrin/asancodes.h
#───────────────────────────────────────────────────────────────────────────────
@ -337,8 +335,6 @@ o/libc/nt/codegen.inc: \
ape/macros.internal.h \
ape/relocations.h \
libc/macros.internal.h \
libc/macros.internal.inc \
libc/macros-cpp.internal.inc \
libc/intrin/asancodes.h
.PHONY: o/$(MODE)/libc/nt

View file

@ -24,7 +24,7 @@
/* clang-format off */
.macro .ntimp fn:req
yoink _init_ntdll
.yoink _init_ntdll
.initbss 202,_init_ntdll.\fn
__imp_\fn:
.quad 0

View file

@ -43,7 +43,7 @@
// @param r15 is envp (still callee saved)
// @note rdi is __init_bss_start (callee monotonic lockstep)
// @note rsi is __init_rodata_start (callee monotonic lockstep)
// @see .init.start & .init.end (libc/macros.internal.inc)
// @see .init.start & .init.end (libc/macros.internal.h)
// @see ape/ape.lds
.section .initprologue,"ax",@progbits
.type _init,@function
@ -76,7 +76,7 @@ _woot: leave
// Decentralized section for packed data structures & initializers.
//
// @see .initro (libc/macros.internal.inc)
// @see .initro (libc/macros.internal.h)
// @see ape/ape.lds
.section .initroprologue,"a",@progbits
.type __init_rodata_start,@object
@ -100,7 +100,7 @@ __init_rodata_end:
//
// Data in this section becomes read-only after initialization.
//
// @see .piro.bss.init (libc/macros.internal.inc)
// @see .piro.bss.init (libc/macros.internal.h)
// @see libc/runtime/piro.c
// @see ape/ape.lds
.section .piro.bss.init.1,"aw",@nobits

View file

@ -0,0 +1,92 @@
// o/$(MODE)/tool/build/lz4toasm.com -o o/$(MODE)/libc/str/EastAsianWidth.s -s kEastAsianWidth o/$(MODE)/libc/str/EastAsianWidth.bin.lz4
#include "libc/macros.internal.h"
.rodata
.align 4
kEastAsianWidthBits:
.long 32768 * 8
.endobj kEastAsianWidthBits,globl,hidden
.previous
.initbss 500,_init_kEastAsianWidth
kEastAsianWidth:
.zero 32768
.endobj kEastAsianWidth,globl,hidden
.previous
.init.start 500,_init_kEastAsianWidth
push %rsi
mov $500,%edx
call lz4cpy
mov %rax,%rdi
pop %rsi
add $504,%rsi
.init.end 500,_init_kEastAsianWidth
.initro 500,_init_kEastAsianWidth
kEastAsianWidthLz4:
.byte 0x1f,0x00,0x01,0x00,0xff,0xff,0x0e,0x17 #  λλ
.byte 0xff,0x01,0x00,0x0f,0x30,0x01,0xff,0x12 #λ 0λ
.byte 0xaf,0x88,0x99,0xf0,0xad,0xae,0xfb,0x2b #»êÖ¡«+
.byte 0x00,0x81,0xfb,0x13,0x01,0xf6,0x3f,0x0c # ü÷?
.byte 0x00,0x06,0x1a,0x00,0x04,0x2f,0x1e,0x09 #  /
.byte 0x5c,0x00,0x2d,0x43,0x60,0x00,0x00,0x30 #\ -C`  0
.byte 0xa9,0x02,0x10,0x0f,0x06,0x00,0xf3,0x0d # 
.byte 0x80,0x00,0x00,0x08,0x00,0x02,0x0c,0x00 #Ç    
.byte 0x60,0x30,0x40,0x10,0x00,0x00,0x04,0x2c #`0@►  ♦,
.byte 0x24,0x20,0x0c,0x00,0x00,0x00,0x01,0x00 #$     
.byte 0x00,0x00,0x50,0xb8,0x33,0x00,0x10,0xe0 #  P3 α
.byte 0x11,0x00,0x1f,0x80,0x00,0x01,0x58,0x12 # Ç X
.byte 0x18,0x07,0x00,0x1f,0x21,0xb0,0x03,0x55 # !U
.byte 0x16,0xfb,0xb2,0x03,0x3f,0x0f,0x00,0xff #? λ
.byte 0x01,0x00,0x06,0x11,0x3f,0x35,0x01,0x03 # ?5
.byte 0x0d,0x00,0x4e,0x7f,0xfe,0xff,0xff,0x0b # Nλλ
.byte 0x00,0x41,0xff,0xff,0xff,0xe0,0x06,0x00 # Aλλλα 
.byte 0x07,0x13,0x00,0x11,0x7f,0x06,0x00,0x17 #  
.byte 0x07,0x5e,0x00,0x02,0x12,0x00,0x2f,0x00 #^  / 
.byte 0xff,0x01,0x00,0xff,0xff,0xff,0x5d,0x0e #λ λλλ]
.byte 0xa0,0x07,0x0f,0x01,0x00,0xff,0xff,0xff #á λλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe #λλλλλλλ
.byte 0x13,0x1f,0x67,0x0e,0x0f,0x0c,0x13,0x83 #gâ
.byte 0x1f,0x1f,0x60,0x13,0x3d,0x0f,0x63,0x06 #`=c
.byte 0xff,0xff,0xff,0xff,0xff,0x66,0x2f,0x0f #λλλλλf/
.byte 0x00,0x01,0x00,0xff,0xff,0xf9,0x04,0xb0 #  λλ
.byte 0x1a,0x2f,0xd1,0xe0,0x00,0x1d,0xff,0x10 #/α λ
.byte 0x0f,0xa8,0x15,0x21,0x0f,0xa2,0x00,0x50 #¿§!ó P
.byte 0x12,0x03,0xa6,0x00,0x3f,0xf7,0xff,0x7f #ª ?λ
.byte 0xd9,0x04,0x00,0x08,0xcd,0x19,0x1b,0x01 # 
.byte 0x1c,0x00,0x2f,0x7f,0x00,0x01,0x00,0xff # /  λ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xf8,0x1f,0x0f,0x80 #λλλλ°Ç
.byte 0x18,0xff,0xff,0xf1,0x0f,0x00,0x03,0x4c #λλ± L
.byte 0x1f,0x07,0x04,0x08,0xff,0xff,0xff,0xff #λλλλ
.byte 0x92,0x0f,0xc5,0x04,0x10,0x03,0x27,0x16 #Æ'
.byte 0x4f,0x07,0x00,0xf0,0x00,0x6b,0x1b,0x1f #O  k
.byte 0x0f,0x04,0x10,0xff,0xff,0xff,0xff,0xff #λλλλλ
.byte 0xff,0xff,0x94,0x1f,0x10,0x19,0x00,0x05 #λλö 
.byte 0x0f,0x22,0x39,0x05,0x29,0x40,0xfe,0xd5 #.9)@■╒
.byte 0x0c,0x12,0x07,0x14,0x08,0x6f,0x0f,0xff #oλ
.byte 0x01,0x03,0x00,0x3f,0x60,0x08,0x04,0x34 # ?`4
.byte 0x01,0xe0,0xbf,0x10,0x08,0x15,0xdf,0x36 #α§6
.byte 0x38,0x10,0x87,0x08,0x00,0x15,0x11,0x64 #8ç §d
.byte 0x08,0x1f,0xfd,0x40,0x08,0x03,0x15,0x9f #²@§ƒ
.byte 0xad,0x38,0x11,0x78,0x4d,0x1f,0x10,0x04 #¡8xM
.byte 0xf3,0x39,0x07,0xb4,0x00,0x1c,0xf8,0x6a #9 °j
.byte 0x1f,0x05,0xde,0x38,0x6f,0x10,0x27,0x00 #8o' 
.byte 0x00,0x18,0xf0,0x81,0x0d,0x0a,0x0f,0x9e # ü
.byte 0x08,0x12,0x18,0xe0,0x8f,0x00,0x20,0x7b #αÅ  {
.byte 0xfc,0x06,0x00,0x20,0xe7,0xc7,0x05,0x00 #  τ 
.byte 0x0f,0xe0,0x1f,0x01,0x5f,0x0f,0x07,0x07 #α_
.byte 0x00,0x3f,0xe0,0x20,0x9b,0x0f,0x01,0x00 # ?α ¢ 
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0x0b,0x1f,0x3f,0xfc,0x1f,0xff,0xff,0xff #?λλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0x08,0x50,0xff #λλλλλPλ
.byte 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00
.endobj kEastAsianWidthLz4,globl,hidden
.previous

View file

@ -1,92 +0,0 @@
// o/$(MODE)/tool/build/lz4toasm.com -o o/$(MODE)/libc/str/EastAsianWidth.s -s kEastAsianWidth o/$(MODE)/libc/str/EastAsianWidth.bin.lz4
.include "libc/macros.internal.inc"
.rodata
.align 4
kEastAsianWidthBits:
.long 32768 * 8
.endobj kEastAsianWidthBits,globl,hidden
.previous
.initbss 500,_init_kEastAsianWidth
kEastAsianWidth:
.zero 32768
.endobj kEastAsianWidth,globl,hidden
.previous
.init.start 500,_init_kEastAsianWidth
push %rsi
mov $500,%edx
call lz4cpy
mov %rax,%rdi
pop %rsi
add $504,%rsi
.init.end 500,_init_kEastAsianWidth
.initro 500,_init_kEastAsianWidth
kEastAsianWidthLz4:
.byte 0x1f,0x00,0x01,0x00,0xff,0xff,0x0e,0x17 #  λλ
.byte 0xff,0x01,0x00,0x0f,0x30,0x01,0xff,0x12 #λ 0λ
.byte 0xaf,0x88,0x99,0xf0,0xad,0xae,0xfb,0x2b #»êÖ¡«+
.byte 0x00,0x81,0xfb,0x13,0x01,0xf6,0x3f,0x0c # ü÷?
.byte 0x00,0x06,0x1a,0x00,0x04,0x2f,0x1e,0x09 #  /
.byte 0x5c,0x00,0x2d,0x43,0x60,0x00,0x00,0x30 #\ -C`  0
.byte 0xa9,0x02,0x10,0x0f,0x06,0x00,0xf3,0x0d # 
.byte 0x80,0x00,0x00,0x08,0x00,0x02,0x0c,0x00 #Ç    
.byte 0x60,0x30,0x40,0x10,0x00,0x00,0x04,0x2c #`0@►  ♦,
.byte 0x24,0x20,0x0c,0x00,0x00,0x00,0x01,0x00 #$     
.byte 0x00,0x00,0x50,0xb8,0x33,0x00,0x10,0xe0 #  P3 α
.byte 0x11,0x00,0x1f,0x80,0x00,0x01,0x58,0x12 # Ç X
.byte 0x18,0x07,0x00,0x1f,0x21,0xb0,0x03,0x55 # !U
.byte 0x16,0xfb,0xb2,0x03,0x3f,0x0f,0x00,0xff #? λ
.byte 0x01,0x00,0x06,0x11,0x3f,0x35,0x01,0x03 # ?5
.byte 0x0d,0x00,0x4e,0x7f,0xfe,0xff,0xff,0x0b # Nλλ
.byte 0x00,0x41,0xff,0xff,0xff,0xe0,0x06,0x00 # Aλλλα 
.byte 0x07,0x13,0x00,0x11,0x7f,0x06,0x00,0x17 #  
.byte 0x07,0x5e,0x00,0x02,0x12,0x00,0x2f,0x00 #^  / 
.byte 0xff,0x01,0x00,0xff,0xff,0xff,0x5d,0x0e #λ λλλ]
.byte 0xa0,0x07,0x0f,0x01,0x00,0xff,0xff,0xff #á λλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe #λλλλλλλ
.byte 0x13,0x1f,0x67,0x0e,0x0f,0x0c,0x13,0x83 #gâ
.byte 0x1f,0x1f,0x60,0x13,0x3d,0x0f,0x63,0x06 #`=c
.byte 0xff,0xff,0xff,0xff,0xff,0x66,0x2f,0x0f #λλλλλf/
.byte 0x00,0x01,0x00,0xff,0xff,0xf9,0x04,0xb0 #  λλ
.byte 0x1a,0x2f,0xd1,0xe0,0x00,0x1d,0xff,0x10 #/α λ
.byte 0x0f,0xa8,0x15,0x21,0x0f,0xa2,0x00,0x50 #¿§!ó P
.byte 0x12,0x03,0xa6,0x00,0x3f,0xf7,0xff,0x7f #ª ?λ
.byte 0xd9,0x04,0x00,0x08,0xcd,0x19,0x1b,0x01 # 
.byte 0x1c,0x00,0x2f,0x7f,0x00,0x01,0x00,0xff # /  λ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xf8,0x1f,0x0f,0x80 #λλλλ°Ç
.byte 0x18,0xff,0xff,0xf1,0x0f,0x00,0x03,0x4c #λλ± L
.byte 0x1f,0x07,0x04,0x08,0xff,0xff,0xff,0xff #λλλλ
.byte 0x92,0x0f,0xc5,0x04,0x10,0x03,0x27,0x16 #Æ'
.byte 0x4f,0x07,0x00,0xf0,0x00,0x6b,0x1b,0x1f #O  k
.byte 0x0f,0x04,0x10,0xff,0xff,0xff,0xff,0xff #λλλλλ
.byte 0xff,0xff,0x94,0x1f,0x10,0x19,0x00,0x05 #λλö 
.byte 0x0f,0x22,0x39,0x05,0x29,0x40,0xfe,0xd5 #.9)@■╒
.byte 0x0c,0x12,0x07,0x14,0x08,0x6f,0x0f,0xff #oλ
.byte 0x01,0x03,0x00,0x3f,0x60,0x08,0x04,0x34 # ?`4
.byte 0x01,0xe0,0xbf,0x10,0x08,0x15,0xdf,0x36 #α§6
.byte 0x38,0x10,0x87,0x08,0x00,0x15,0x11,0x64 #8ç §d
.byte 0x08,0x1f,0xfd,0x40,0x08,0x03,0x15,0x9f #²@§ƒ
.byte 0xad,0x38,0x11,0x78,0x4d,0x1f,0x10,0x04 #¡8xM
.byte 0xf3,0x39,0x07,0xb4,0x00,0x1c,0xf8,0x6a #9 °j
.byte 0x1f,0x05,0xde,0x38,0x6f,0x10,0x27,0x00 #8o' 
.byte 0x00,0x18,0xf0,0x81,0x0d,0x0a,0x0f,0x9e # ü
.byte 0x08,0x12,0x18,0xe0,0x8f,0x00,0x20,0x7b #αÅ  {
.byte 0xfc,0x06,0x00,0x20,0xe7,0xc7,0x05,0x00 #  τ 
.byte 0x0f,0xe0,0x1f,0x01,0x5f,0x0f,0x07,0x07 #α_
.byte 0x00,0x3f,0xe0,0x20,0x9b,0x0f,0x01,0x00 # ?α ¢ 
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0x0b,0x1f,0x3f,0xfc,0x1f,0xff,0xff,0xff #?λλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff #λλλλλλλλ
.byte 0xff,0xff,0xff,0xff,0xff,0x08,0x50,0xff #λλλλλPλ
.byte 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00
.endobj kEastAsianWidthLz4,globl,hidden
.previous

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,ABORTED_COMMAND,11,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,ABORTED_COMMAND,11,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,ACCT_BYTEORDER,0,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,ACCT_BYTEORDER,0,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,ACCT_COMM,0x10,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,ACCT_COMM,0x10,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,ACK,4,4,4,4,4,0

2
libc/sysv/consts/ACK.s Normal file
View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,ACK,4,4,4,4,4,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,ACORE,0,8,8,8,8,0

2
libc/sysv/consts/ACORE.s Normal file
View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,ACORE,0,8,8,8,8,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon misc,AFORK,0,1,1,1,1,0

2
libc/sysv/consts/AFORK.s Normal file
View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon misc,AFORK,0,1,1,1,1,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ALG,38,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ALG,38,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_APPLETALK,5,0x10,0x10,0x10,0x10,0x10

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_APPLETALK,5,0x10,0x10,0x10,0x10,0x10

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ASH,18,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ASH,18,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ATMPVC,8,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ATMPVC,8,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ATMSVC,20,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ATMSVC,20,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_AX25,3,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_AX25,3,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_BLUETOOTH,31,0,36,0x20,31,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_BLUETOOTH,31,0,36,0x20,31,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_BRIDGE,7,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_BRIDGE,7,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_CAIF,37,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_CAIF,37,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_CAN,29,0,0,0,35,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_CAN,29,0,0,0,35,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ECONET,19,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ECONET,19,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_FILE,1,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_FILE,1,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_IB,27,0,0,0,0,0

2
libc/sysv/consts/AF_IB.s Normal file
View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_IB,27,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_IEEE802154,36,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_IEEE802154,36,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_INET,2,2,2,2,2,2

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_INET,2,2,2,2,2,2

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_INET6,10,30,28,24,24,23

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_INET6,10,30,28,24,24,23

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_IPX,4,23,23,23,23,6

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_IPX,4,23,23,23,23,6

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_IRDA,23,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_IRDA,23,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_ISDN,34,28,26,26,26,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_ISDN,34,28,26,26,26,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_IUCV,0x20,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_IUCV,0x20,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_KCM,41,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_KCM,41,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_KEY,15,0,0,30,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_KEY,15,0,0,30,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_LINK,0,18,18,18,18,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_LINK,0,18,18,18,18,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_LLC,26,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_LLC,26,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_LOCAL,1,1,1,1,1,1

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_LOCAL,1,1,1,1,1,1

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_MAX,42,40,42,36,37,35

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_MAX,42,40,42,36,37,35

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_MPLS,28,0,0,33,33,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_MPLS,28,0,0,33,33,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_NETBEUI,13,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_NETBEUI,13,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_NETLINK,16,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_NETLINK,16,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_NETROM,6,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_NETROM,6,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_NFC,39,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_NFC,39,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_PACKET,17,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_PACKET,17,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_PHONET,35,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_PHONET,35,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_PPPOX,24,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_PPPOX,24,0,0,0,0,0

View file

@ -1,2 +0,0 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon af,AF_RDS,21,0,0,0,0,0

View file

@ -0,0 +1,2 @@
.include "o/libc/sysv/consts/syscon.internal.inc"
.syscon af,AF_RDS,21,0,0,0,0,0

Some files were not shown because too many files have changed in this diff Show more