From bf548c9f8e2a1b812a8a40c0e999f29486f299e9 Mon Sep 17 00:00:00 2001 From: Florent Revest Date: Thu, 8 Jan 2026 18:34:06 +0100 Subject: [PATCH] x86: Add a test for Clang unnamed sections The origin object is the result of this file on a 6.18 build: #include void test_ubsan_out_of_bounds(void); void test_ubsan_out_of_bounds(void) { int i = 4, j = 4; volatile struct { char above[4]; int arr[4]; char below[4]; } data; OPTIMIZER_HIDE_VAR(i); OPTIMIZER_HIDE_VAR(j); data.arr[j] = i; } And the patch is: void test_ubsan_out_of_bounds(void) { - int i = 4, j = 4; + int i = 4, j = -1; volatile struct { char above[4]; int arr[4]; Since Clang UBSAN generates "unnamed" sections, it exercises these sections changing. --- x86_64/clang-unnamed.ORIG.o | Bin 0 -> 2984 bytes x86_64/clang-unnamed.PATCHED.o | Bin 0 -> 3064 bytes x86_64/clang-unnamed.test | 4 ++++ 3 files changed, 4 insertions(+) create mode 100644 x86_64/clang-unnamed.ORIG.o create mode 100644 x86_64/clang-unnamed.PATCHED.o create mode 100755 x86_64/clang-unnamed.test diff --git a/x86_64/clang-unnamed.ORIG.o b/x86_64/clang-unnamed.ORIG.o new file mode 100644 index 0000000000000000000000000000000000000000..e3a0f97ea2a0684d49fe190f0f44a3cb49bc3183 GIT binary patch literal 2984 zcmbtVJ!}<65MKMe$4`iY&5uDMQVz+&hA0Q-*MJng!oU?)ngoPo&~oqYo_+Y<9o*eB zb`>N;VWmk+n~FAR(?m)l(^1e+MKnl>k|H!|f@EfPXWlK#y+|k{-OkLn^Ucof&fa}} zY5wx)$cSJW5uc07V^oOgZI#_tW?M{%{bKhgb3%OSt^egj-Zw3r@HXZq4|ZkC0s}6l&*5;<{NE}XtOg*35COo6Ly1*l;h#?i{HthuNY z`>7Koe!A$aM0pWssWWrlopH}O)2BY|^y4Hvb5!iZ1cu-{wnp)lTcaloTjLrr!r$A( zGii!f@RsjNqy9}q0~mGE5bB`bnQ92*kd4`f*lu{*{0P(@W8J$Hf%~iuo_tm(hv422 zd|?Q_Is_MQbptkq)JWDZW!9CQte=L3kg^-4WxggQn0eHdMd=62GFV!ci+w*20bQLv z3o~Uuhu&K1r^^88OiO+mCXuugRvEf}oIrU>%sYfV@On!N?i&jB-cEQJzl`^f=6Ij*U7*cV>l*Pm$MHP_|Iok*R(HO^4ro3@-FMZ*K{64q>msZlpKBDy3gZ#C zh2t6Lj%A$R4fha*aoh_Od>0hPuWENtKjU1_KALCz2KoG6jB`H=w^-|yeg|}!YrVu) z8LgJW&7;J3(S%`0*SUEX`lXL4X51N|XxE*G)=E>q7lraBw6W6KMdj1wMcyG=OTs@H6&#(fGbhTBnyO_*#w2j@iu?qB8~1_N`p86bU~n*K5QdqHClaKCY1 zTmlT&$M2Xa-;;B|1i{8w6xLsnjk!&ELe7KTxC<0$_bc-m{|UHt`{z*r_ZjXVe$(vz zdk$FL`fXZ>;~`85`>dYyd$j&BwQ4mGJh<=w4B_V#_;E#5 z7W1h*@e0to`d2C7G4XN##^JH+$9(qLA>~_Ii2DHl4|V;E|7!d0ApZ#^-9X0>uAd>S PsgCcobVSP{Sgv>j!oDOk literal 0 HcmV?d00001 diff --git a/x86_64/clang-unnamed.PATCHED.o b/x86_64/clang-unnamed.PATCHED.o new file mode 100644 index 0000000000000000000000000000000000000000..8d49808447468f67ea90540408df6644988d3ca0 GIT binary patch literal 3064 zcmbtW&1)1{5U*q=elC7S4Jd5y5{x2tjGqx<8J4Jh2(qA_VtDj)_hj1ibW3+noSY0q zh2TG+*FAY$_Ou{^2PHQV_Ok!LLPQb0EPGJKs_v?pXWQe&f__!?d-d^Ny?Srv&c)eF z!$U(LGz7muUlSCdv#BrFGO-5xVIS=LaR%V}RcrOF;aLwxXvSKb86UIOXU2DB8VXx- zp*l|dNfn2uU8L1d)#PW(d9ilmZnfup0iD~2tkvhn+`Rdk9M;}h>+2+J(D3GE#u~|F z7^Qw=d9qzk>`D=l03G##OFo9|=XFxXW#&Ni>_N5uG z?%Sc^1a`P!EO~L_N1-uw-kdVe8AnbXtGE5YJ#!RBDS$?_)sf*{@V>imcq|*IH95y~ zn;h3%ze}VutHKA|{nu0}-yu}cql_w$o#R(i70{YMo2|fRP0Pg{$o6P?J8VJq&-#LO zVJ8RR)&P8N08V+z;=>nhLfxWrBx@`%9+RmbKnu}_o zZO1O6o$0eUleS}Qx@J3EL@1Bcv_m)WR54&bLc{h0TwX@{9ix8uNEZTWC(lz)Zq@MF z0k~qEPI8-O-(-9{a{bg=jFUahN#0b$f6#D-vp1n43UaA&-go_pF%}6g>mu40ee-N5 zjO@$qq1cO^bgbaAH>x3#;L?$_7b3xF&qT6*!Kt5!MswD)zrnifOYCL+hYI%i1Z89} z7klY{Fq7q0YS)pcan73}rCuimGxh@8BoT)JU24XWYo|7am@=o(C0ET^Y{f9NTb`>< zmZGOPeCDm2V-P25wXpZW#CO#*FJHNSJnLLAgJ7wpY}dsnaDn}~{}UgVm_tgn9K1rQ z3L*#0D0XlqxBbv%hd!YETU?s&Vh7QidPdG)g4IMQaOoR?52Nrc|K54AgY=8||AYd? ztO>xp!wA$?4@iGXA6-O@^3%Jg(_gF{&_R^RmPq(DmMOMQuUOfygD4l*e-kl^ zRrKFrKYB}alJyIA4+Zkq-vpZbp9Ul&8~Z~s{|Zi()z9FAve=dCM|WBBOZ^@pM)^cyC!Fon0)XKmT+dmPj%yuJWEBN(D{EKxhhJAq^gca?6WkW7Q zFRu6t{tRbGuHmOslMSR!R6lwHi}m{lv9kOYClY&!ExPc(aiT2$N=bhDFCc!hu73yQ z|BdsXmBh?t|8n2|8{mJR4aW!g^YY*W&X=wKAsbMAh^T(_7q7T}N>e;Lgy0X(Kh2ze lPs;k2e%p(8hx|7<=o%>+akw5rYbx`