void f0(void);
void f1(void);
void f2(void);
void g() { f0(); f1(); f2(); }
g:
push {r4, lr}
mov r4, r9
bl f(PLT)
mov r9, r4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
linux/arch/arm/mach-rockchip/sleep.S:20:23: error: too many positional arguments | |
setmode 0x00000080 | 0x00000040 | 0x00000013, r1 @ set svc, irqs off | |
^ | |
make[5]: *** [linux/scripts/Makefile.build:362: arch/arm/mach-rockchip/sleep.o] Error 1 | |
make[5]: Target 'arch/arm/mach-rockchip/' not remade because of errors. | |
make[4]: *** [linux/scripts/Makefile.build:485: arch/arm/mach-rockchip] Error 2 | |
linux/arch/arm/mach-tegra/sleep.S:127:23: error: too many positional arguments | |
mov32 r2, 0x50040000 + 0x3000 | |
^ | |
linux/arch/arm/mach-tegra/reset-handler.S:95:23: error: too many positional arguments |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os, re, subprocess, sys | |
from ipdb import set_trace as bp | |
def main(filename): | |
last = 0 | |
while 1: | |
p = subprocess.run(['/tmp/Rel/bin/llvm-lit', '-v', filename], capture_output=True) | |
if p.returncode != 1: break | |
lines = p.stdout.decode().split('\n') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Linux binfmt loaders | |
`fs/Kconfig.binfmt` defines a few loaders. | |
* `BINFMT_ELF` defaults to y and depends on `MMU`. | |
* `BINFMT_ELF_FDPIC` defaults to y when `BINFMT_ELF` is not selected. A few architecture support `BINFMT_ELF_FDPIC` for NOMMU. ARM supports FDPIC even with a MMU. | |
* `BINFMT_FLAT` is provided for a few architectures. | |
`BINFMT_AOUT`, removed in 2022, had been supported for alpha/arm/x86-32. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% echo 'int main(){}' > a.cc | |
% clang -fuse-ld=lld a.cc -z separate-code | |
% readelf -WSl a.out | |
There are 30 section headers, starting at offset 0x2868: | |
Section Headers: | |
[Nr] Name Type Address Off Size ES Flg Lk Inf Al | |
[ 0] NULL 0000000000000000 000000 000000 00 0 0 0 | |
[ 1] .interp PROGBITS 00000000000002a8 0002a8 00001c 00 A 0 0 1 | |
[ 2] .note.ABI-tag NOTE 00000000000002c4 0002c4 000020 00 A 0 0 4 |
Published to https://maskray.me/blog/2024-01-23-riscv-tlsdesc-works
Patch musl
--- c/arch/riscv64/reloc.h
+++ i/arch/riscv64/reloc.h
@@ -17,6 +17,7 @@
#define REL_DTPMOD R_RISCV_TLS_DTPMOD64
#define REL_DTPOFF R_RISCV_TLS_DTPREL64
#define REL_TPOFF R_RISCV_TLS_TPREL64
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PATH=/tmp/Rel/bin:$PATH | |
cat > switch.cc <<e | |
#define DO A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) A(9) A(10) A(11) A(12) A(13) | |
#define A(i) void bar##i(); | |
DO | |
#undef A | |
void ext(); | |
void foo(int i) { | |
switch (i) { | |
#define A(i) case i: bar##i(); break; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Automatically generated file; DO NOT EDIT. | |
# Linux/x86 6.7.0 Kernel Configuration | |
# | |
CONFIG_CC_VERSION_TEXT="gcc (Debian 13.2.0-5) 13.2.0" | |
CONFIG_CC_IS_GCC=y | |
CONFIG_GCC_VERSION=130200 | |
CONFIG_CLANG_VERSION=0 | |
CONFIG_AS_IS_GNU=y | |
CONFIG_AS_VERSION=24100 |
AddressSanitizer (ASan) is a compiler technology that checks addressability-related memory errors with some add-on checks. It consists of two parts: compiler instrumentation and runtime library. To put it in the simplest way,
- The compiler instruments global variables, stack frames, and heap allocations to track shadow memory.
- The compiler instruments memory access instructions to check shadow memory.
- In case of an error, the inserted code calls a callback (implemented in the runtime library) to report an error with a stack trace. Normally the program will exit after the error message is printed.
Clang 3.1 implemented AddressSanitizer in 2011.
GCC 4.8 integrated AddressSanitizer in 2012.
MSVC (starting in Visual Studio 2019 version 16.9) added /INFERASANLIBS
.
We can't make this file beautiful and searchable because it's too large.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
https://reviews.llvm.org/D1 Abandoned Test klimek | |
https://reviews.llvm.org/D6 Abandoned Update all diagnostic messages in DiagnosticSemaKinds.td to use the new diffing format for types. rtrieu | |
https://reviews.llvm.org/D7 Abandoned test dblaikie | |
https://reviews.llvm.org/D9 Abandoned Test for playing around with emails klimek | |
https://reviews.llvm.org/D10 Abandoned A new test revision for funz klimek | |
https://reviews.llvm.org/D11 Abandoned Let's try again klimek | |
https://reviews.llvm.org/D12 Abandoned And yet another test klimek | |
https://reviews.llvm.org/D13 Abandoned test klimek | |
https://reviews.llvm.org/D14 Abandoned Test test klimek | |
https://reviews.llvm.org/D16 Abandoned Big test klimek |
NewerOlder