cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
113 lines
4.1 KiB
ArmAsm
113 lines
4.1 KiB
ArmAsm
// REQUIRES: x86
|
|
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
|
|
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/resolution.s -o %t2
|
|
// RUN: ld.lld -discard-all %t %t2 -o %t3
|
|
// RUN: llvm-readelf --symbols %t3 | FileCheck %s
|
|
|
|
// This is an exhaustive test for checking which symbol is kept when two
|
|
// have the same name. Each symbol has a different size which is used
|
|
// to see which one was chosen.
|
|
|
|
// CHECK: Symbol table '.symtab' contains 23 entries:
|
|
// CHECK-NEXT: Size Type Bind Vis Ndx Name
|
|
// CHECK-NEXT: 0 NOTYPE LOCAL DEFAULT UND
|
|
// CHECK-NEXT: 0 NOTYPE GLOBAL DEFAULT 1 _start
|
|
// CHECK-NEXT: 0 NOTYPE WEAK DEFAULT 1 RegularWeak_with_RegularWeak
|
|
// CHECK-NEXT: 33 NOTYPE GLOBAL DEFAULT 1 RegularWeak_with_RegularStrong
|
|
// CHECK-NEXT: 2 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_RegularWeak
|
|
// CHECK-NEXT: 3 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefWeak
|
|
// CHECK-NEXT: 4 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefStrong
|
|
// CHECK-NEXT: 5 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefWeak
|
|
// CHECK-NEXT: 6 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefStrong
|
|
// CHECK-NEXT: 40 OBJECT GLOBAL DEFAULT 2 RegularWeak_with_CommonStrong
|
|
// CHECK-NEXT: 10 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_CommonStrong
|
|
// CHECK-NEXT: 43 NOTYPE WEAK DEFAULT 1 UndefWeak_with_RegularWeak
|
|
// CHECK-NEXT: 44 NOTYPE GLOBAL DEFAULT 1 UndefWeak_with_RegularStrong
|
|
// CHECK-NEXT: 45 NOTYPE WEAK DEFAULT 1 UndefStrong_with_RegularWeak
|
|
// CHECK-NEXT: 46 NOTYPE GLOBAL DEFAULT 1 UndefStrong_with_RegularStrong
|
|
// CHECK-NEXT: 0 NOTYPE WEAK DEFAULT UND UndefWeak_with_UndefWeak
|
|
// CHECK-NEXT: 49 OBJECT GLOBAL DEFAULT 2 UndefWeak_with_CommonStrong
|
|
// CHECK-NEXT: 51 OBJECT GLOBAL DEFAULT 2 UndefStrong_with_CommonStrong
|
|
// CHECK-NEXT: 22 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_RegularWeak
|
|
// CHECK-NEXT: 55 NOTYPE GLOBAL DEFAULT 1 CommonStrong_with_RegularStrong
|
|
// CHECK-NEXT: 26 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefWeak
|
|
// CHECK-NEXT: 27 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefStrong
|
|
// CHECK-NEXT: 63 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_CommonStrong
|
|
|
|
.globl _start
|
|
_start:
|
|
nop
|
|
|
|
local:
|
|
|
|
.weak RegularWeak_with_RegularWeak
|
|
.size RegularWeak_with_RegularWeak, 0
|
|
RegularWeak_with_RegularWeak:
|
|
|
|
.weak RegularWeak_with_RegularStrong
|
|
.size RegularWeak_with_RegularStrong, 1
|
|
RegularWeak_with_RegularStrong:
|
|
|
|
.global RegularStrong_with_RegularWeak
|
|
.size RegularStrong_with_RegularWeak, 2
|
|
RegularStrong_with_RegularWeak:
|
|
|
|
.weak RegularWeak_with_UndefWeak
|
|
.size RegularWeak_with_UndefWeak, 3
|
|
RegularWeak_with_UndefWeak:
|
|
|
|
.weak RegularWeak_with_UndefStrong
|
|
.size RegularWeak_with_UndefStrong, 4
|
|
RegularWeak_with_UndefStrong:
|
|
|
|
.global RegularStrong_with_UndefWeak
|
|
.size RegularStrong_with_UndefWeak, 5
|
|
RegularStrong_with_UndefWeak:
|
|
|
|
.global RegularStrong_with_UndefStrong
|
|
.size RegularStrong_with_UndefStrong, 6
|
|
RegularStrong_with_UndefStrong:
|
|
|
|
.weak RegularWeak_with_CommonStrong
|
|
.size RegularWeak_with_CommonStrong, 8
|
|
RegularWeak_with_CommonStrong:
|
|
|
|
.global RegularStrong_with_CommonStrong
|
|
.size RegularStrong_with_CommonStrong, 10
|
|
RegularStrong_with_CommonStrong:
|
|
|
|
.weak UndefWeak_with_RegularWeak
|
|
.size UndefWeak_with_RegularWeak, 11
|
|
.quad UndefWeak_with_RegularWeak
|
|
|
|
.weak UndefWeak_with_RegularStrong
|
|
.size UndefWeak_with_RegularStrong, 12
|
|
.quad UndefWeak_with_RegularStrong
|
|
|
|
.size UndefStrong_with_RegularWeak, 13
|
|
.quad UndefStrong_with_RegularWeak
|
|
|
|
.size UndefStrong_with_RegularStrong, 14
|
|
.quad UndefStrong_with_RegularStrong
|
|
|
|
.weak UndefWeak_with_UndefWeak
|
|
.size UndefWeak_with_UndefWeak, 15
|
|
.quad UndefWeak_with_UndefWeak
|
|
|
|
.weak UndefWeak_with_CommonStrong
|
|
.size UndefWeak_with_CommonStrong, 17
|
|
.quad UndefWeak_with_CommonStrong
|
|
|
|
.size UndefStrong_with_CommonStrong, 19
|
|
.quad UndefStrong_with_CommonStrong
|
|
|
|
.comm CommonStrong_with_RegularWeak,22,4
|
|
|
|
.comm CommonStrong_with_RegularStrong,23,4
|
|
|
|
.comm CommonStrong_with_UndefWeak,26,4
|
|
|
|
.comm CommonStrong_with_UndefStrong,27,4
|
|
|
|
.comm CommonStrong_with_CommonStrong,31,4
|