<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in WITHOUT_ZEROREGS</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>2a44cccd404d94c273c78e279df3fdc5531d25a2 - Add option to clear caller-used registers on function return.</title>
        <link>http://opengrok.net:8080/history/src/tools/build/options/WITHOUT_ZEROREGS#2a44cccd404d94c273c78e279df3fdc5531d25a2</link>
        <description>Add option to clear caller-used registers on function return.The WITH_ZEROREGS option for src.conf will zero caller-used registercontents just before returning from a function, ensuring thattemporary values are not leaked beyond the function boundary. Thismeans that register contents are less likely to be available for sidechannel attacks and information exposures.It reduces all except 1 of the simple &quot;write-what-where&quot; ROP gadgets in/lib:    grep &quot;Gadget found&quot; /tmp/before_lib* | wc -l     197    grep &quot;Gadget found&quot; /tmp/after_lib* | wc -l       1    grep &quot;Gadget found&quot; /tmp/after_lib*    /tmp/after_libbsdxml.so.4.txt:  [+] Gadget found: 0x1b3f1 mov qword ptr [rdi], rcx ; pop rbp ; retTo reproduce:    for lib in *.so.*; do        echo $lib:        ROPgadget --ropchain --binary /tmp/be_mount.Sx87/lib/$lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;! /tmp/before_$lib.txt        ROPgadget --ropchain --binary $lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;!  /tmp/after_$lib.txt    doneAdditionally, in some cases this reduces the number of all ROP gadgets(quick check with /libs only):libalias.so.7: reduction 10.000%libavl.so.2: reduction 13.900%libbsdxml.so.4: reduction 37.500%libc.so.7: reduction 10.000%libc++.so.1: reduction 14.800%libcam.so.7: reduction 50.700%libcap_netdb.so.1: reduction 5.800%libcasper.so.1: reduction 14.600%libcrypto.so.30: reduction 7.500%libdtrace.so.2: reduction 3.900%libelf.so.2: reduction 15.800%libgcc_s.so.1: reduction 32.700%libibverbs.so.1: reduction 5.300%libicp.so.3: reduction 2.100%libipt.so.0: reduction 28.200%libirdma.so.1: reduction 1.600%libkiconv.so.4: reduction 0%libm.so.5: reduction 21.900%libmd.so.6: reduction 0%libmd.so.7: reduction 3.100%libncursesw.so.9: reduction 11.200%libnvpair.so.2: reduction 40.200%libpcap.so.8: reduction 11.400%libpjdlog.so.0: reduction 27.400%libsbuf.so.6: reduction 2.900%libspl.so.2: reduction 42.300%libsys.so.7: reduction 2.700%libthr.so.3: reduction 21.000%libuutil.so.2: reduction 13.100%libz.so.6: reduction 5.600%libzpool.so.2: reduction 15.100%In some cases it adds some ROP gadgets despite removing the simple ROPgadgets:lib80211.so.1: reduction -32.700%libbe.so.1: reduction -22.300%libbegemot.so.4: reduction -20.500%libcap_dns.so.2: reduction -58.000%libcap_fileargs.so.1: reduction -28.200%libcap_grp.so.1: reduction -54.000%libcap_net.so.1: reduction -28.800%libcap_pwd.so.1: reduction -38.800%libcap_sysctl.so.2: reduction -71.100%libcap_syslog.so.1: reduction -15.000%libcrypt.so.5: reduction -14.600%libctf.so.2: reduction -.300%libcxxrt.so.1: reduction -14.000%libdevstat.so.7: reduction -1.600%libedit.so.8: reduction -4.200%libgeom.so.5: reduction -16.500%libicp_rescue.so.3: reduction -2.300%libipsec.so.4: reduction -31.800%libjail.so.1: reduction -21.700%libkvm.so.7: reduction -5.300%libmlx5.so.1: reduction -6.300%libmt.so.5: reduction -23.000%libnv.so.1: reduction -.400%librss.so.1: reduction -3.800%librt.so.1: reduction -24.000%libssp.so.0: reduction -21.100%libstats.so.0: reduction -9.000%libtinfow.so.9: reduction -3.500%libtpool.so.2: reduction -36.500%libufs.so.8: reduction -11.900%libulog.so.0: reduction -67.400%libumem.so.2: reduction -2.000%libutil.so.9: reduction -7.200%libxo.so.0: reduction -9.000%libzdb.so.2: reduction -11.700%libzfs_core.so.2: reduction -17.700%libzfs.so.4: reduction -.300%libzfsbootenv.so.1: reduction -26.900%libzutil.so.2: reduction -5.600%To reproduce:    for lib in *.so.*; do        echo -n $lib:        before=&quot;$(ROPgadget --nosys --nojop --binary /tmp/be_mount.Sx87/lib/$lib | tail -n1 | cut -d : -f 2)&quot;        after=&quot;$(ROPgadget --nosys --nojop --binary $lib | tail -n1 | cut -d : -f 2)&quot;        echo &quot; reduction&quot; $(bc -S 3 -e &quot;(1-${after}/${before})*100&quot;)%    done &gt;/tmp/reduction.txtMost of the time the size difference is very small (&lt;1% for &gt;50% of thefiles and &gt;10% for only 2 files):lib80211.so.1: size change .100%libalias.so.7: size change 0%libavl.so.2: size change 0%libbe.so.1: size change .100%libbegemot.so.4: size change .100%libbsdxml.so.4: size change 0%libc.so.7: size change 1.200%libc++.so.1: size change 1.600%libcam.so.7: size change 1.900%libcap_dns.so.2: size change .100%libcap_fileargs.so.1: size change .100%libcap_grp.so.1: size change .100%libcap_net.so.1: size change .100%libcap_netdb.so.1: size change .100%libcap_pwd.so.1: size change .100%libcap_sysctl.so.2: size change .100%libcap_syslog.so.1: size change .100%libcasper.so.1: size change 0%libcrypt.so.5: size change 3.900%libcrypto.so.30: size change 1.400%libctf.so.2: size change .100%libcxxrt.so.1: size change .100%libdevstat.so.7: size change 15.400%		exceptionallibdtrace.so.2: size change .600%libedit.so.8: size change 1.800%libelf.so.2: size change .100%libgcc_s.so.1: size change 3.000%libgeom.so.5: size change 0%libibverbs.so.1: size change .100%libicp_rescue.so.3: size change .100%libicp.so.3: size change 1.500%libipsec.so.4: size change .100%libipt.so.0: size change 3.100%libirdma.so.1: size change .100%libjail.so.1: size change .100%libkiconv.so.4: size change .100%libkvm.so.7: size change .100%libm.so.5: size change 1.700%libmd.so.6: size change 0%libmd.so.7: size change .100%libmlx5.so.1: size change 0%libmt.so.5: size change .100%libncursesw.so.9: size change 1.900%libnv.so.1: size change 4.300%libnvpair.so.2: size change 4.300%libpcap.so.8: size change 1.200%libpjdlog.so.0: size change .100%librss.so.1: size change .200%librt.so.1: size change .100%libsbuf.so.6: size change .100%libspl.so.2: size change 0%libssp.so.0: size change .100%libstats.so.0: size change .100%libsys.so.7: size change .100%libthr.so.3: size change 2.400%libtinfow.so.9: size change 1.600%libtpool.so.2: size change .100%libufs.so.8: size change .100%libulog.so.0: size change .100%libumem.so.2: size change 54.300%		exceptionallibutil.so.9: size change .100%libuutil.so.2: size change .100%libxo.so.0: size change .100%libz.so.6: size change .100%libzdb.so.2: size change .300%libzfs_core.so.2: size change .100%libzfs.so.4: size change 2.000%libzfsbootenv.so.1: size change .100%libzpool.so.2: size change 1.200%libzutil.so.2: size change 0%

            List of files:
            /src/tools/build/options/WITHOUT_ZEROREGS</description>
        <pubDate>Sat, 11 Jan 2025 12:48:50 +0000</pubDate>
        <dc:creator>Alexander Leidinger &lt;Alexander@Leidinger.net&gt;</dc:creator>
    </item>
<item>
        <title>2a44cccd404d94c273c78e279df3fdc5531d25a2 - Add option to clear caller-used registers on function return.</title>
        <link>http://opengrok.net:8080/history/src/tools/build/options/WITHOUT_ZEROREGS#2a44cccd404d94c273c78e279df3fdc5531d25a2</link>
        <description>Add option to clear caller-used registers on function return.The WITH_ZEROREGS option for src.conf will zero caller-used registercontents just before returning from a function, ensuring thattemporary values are not leaked beyond the function boundary. Thismeans that register contents are less likely to be available for sidechannel attacks and information exposures.It reduces all except 1 of the simple &quot;write-what-where&quot; ROP gadgets in/lib:    grep &quot;Gadget found&quot; /tmp/before_lib* | wc -l     197    grep &quot;Gadget found&quot; /tmp/after_lib* | wc -l       1    grep &quot;Gadget found&quot; /tmp/after_lib*    /tmp/after_libbsdxml.so.4.txt:  [+] Gadget found: 0x1b3f1 mov qword ptr [rdi], rcx ; pop rbp ; retTo reproduce:    for lib in *.so.*; do        echo $lib:        ROPgadget --ropchain --binary /tmp/be_mount.Sx87/lib/$lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;! /tmp/before_$lib.txt        ROPgadget --ropchain --binary $lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;!  /tmp/after_$lib.txt    doneAdditionally, in some cases this reduces the number of all ROP gadgets(quick check with /libs only):libalias.so.7: reduction 10.000%libavl.so.2: reduction 13.900%libbsdxml.so.4: reduction 37.500%libc.so.7: reduction 10.000%libc++.so.1: reduction 14.800%libcam.so.7: reduction 50.700%libcap_netdb.so.1: reduction 5.800%libcasper.so.1: reduction 14.600%libcrypto.so.30: reduction 7.500%libdtrace.so.2: reduction 3.900%libelf.so.2: reduction 15.800%libgcc_s.so.1: reduction 32.700%libibverbs.so.1: reduction 5.300%libicp.so.3: reduction 2.100%libipt.so.0: reduction 28.200%libirdma.so.1: reduction 1.600%libkiconv.so.4: reduction 0%libm.so.5: reduction 21.900%libmd.so.6: reduction 0%libmd.so.7: reduction 3.100%libncursesw.so.9: reduction 11.200%libnvpair.so.2: reduction 40.200%libpcap.so.8: reduction 11.400%libpjdlog.so.0: reduction 27.400%libsbuf.so.6: reduction 2.900%libspl.so.2: reduction 42.300%libsys.so.7: reduction 2.700%libthr.so.3: reduction 21.000%libuutil.so.2: reduction 13.100%libz.so.6: reduction 5.600%libzpool.so.2: reduction 15.100%In some cases it adds some ROP gadgets despite removing the simple ROPgadgets:lib80211.so.1: reduction -32.700%libbe.so.1: reduction -22.300%libbegemot.so.4: reduction -20.500%libcap_dns.so.2: reduction -58.000%libcap_fileargs.so.1: reduction -28.200%libcap_grp.so.1: reduction -54.000%libcap_net.so.1: reduction -28.800%libcap_pwd.so.1: reduction -38.800%libcap_sysctl.so.2: reduction -71.100%libcap_syslog.so.1: reduction -15.000%libcrypt.so.5: reduction -14.600%libctf.so.2: reduction -.300%libcxxrt.so.1: reduction -14.000%libdevstat.so.7: reduction -1.600%libedit.so.8: reduction -4.200%libgeom.so.5: reduction -16.500%libicp_rescue.so.3: reduction -2.300%libipsec.so.4: reduction -31.800%libjail.so.1: reduction -21.700%libkvm.so.7: reduction -5.300%libmlx5.so.1: reduction -6.300%libmt.so.5: reduction -23.000%libnv.so.1: reduction -.400%librss.so.1: reduction -3.800%librt.so.1: reduction -24.000%libssp.so.0: reduction -21.100%libstats.so.0: reduction -9.000%libtinfow.so.9: reduction -3.500%libtpool.so.2: reduction -36.500%libufs.so.8: reduction -11.900%libulog.so.0: reduction -67.400%libumem.so.2: reduction -2.000%libutil.so.9: reduction -7.200%libxo.so.0: reduction -9.000%libzdb.so.2: reduction -11.700%libzfs_core.so.2: reduction -17.700%libzfs.so.4: reduction -.300%libzfsbootenv.so.1: reduction -26.900%libzutil.so.2: reduction -5.600%To reproduce:    for lib in *.so.*; do        echo -n $lib:        before=&quot;$(ROPgadget --nosys --nojop --binary /tmp/be_mount.Sx87/lib/$lib | tail -n1 | cut -d : -f 2)&quot;        after=&quot;$(ROPgadget --nosys --nojop --binary $lib | tail -n1 | cut -d : -f 2)&quot;        echo &quot; reduction&quot; $(bc -S 3 -e &quot;(1-${after}/${before})*100&quot;)%    done &gt;/tmp/reduction.txtMost of the time the size difference is very small (&lt;1% for &gt;50% of thefiles and &gt;10% for only 2 files):lib80211.so.1: size change .100%libalias.so.7: size change 0%libavl.so.2: size change 0%libbe.so.1: size change .100%libbegemot.so.4: size change .100%libbsdxml.so.4: size change 0%libc.so.7: size change 1.200%libc++.so.1: size change 1.600%libcam.so.7: size change 1.900%libcap_dns.so.2: size change .100%libcap_fileargs.so.1: size change .100%libcap_grp.so.1: size change .100%libcap_net.so.1: size change .100%libcap_netdb.so.1: size change .100%libcap_pwd.so.1: size change .100%libcap_sysctl.so.2: size change .100%libcap_syslog.so.1: size change .100%libcasper.so.1: size change 0%libcrypt.so.5: size change 3.900%libcrypto.so.30: size change 1.400%libctf.so.2: size change .100%libcxxrt.so.1: size change .100%libdevstat.so.7: size change 15.400%		exceptionallibdtrace.so.2: size change .600%libedit.so.8: size change 1.800%libelf.so.2: size change .100%libgcc_s.so.1: size change 3.000%libgeom.so.5: size change 0%libibverbs.so.1: size change .100%libicp_rescue.so.3: size change .100%libicp.so.3: size change 1.500%libipsec.so.4: size change .100%libipt.so.0: size change 3.100%libirdma.so.1: size change .100%libjail.so.1: size change .100%libkiconv.so.4: size change .100%libkvm.so.7: size change .100%libm.so.5: size change 1.700%libmd.so.6: size change 0%libmd.so.7: size change .100%libmlx5.so.1: size change 0%libmt.so.5: size change .100%libncursesw.so.9: size change 1.900%libnv.so.1: size change 4.300%libnvpair.so.2: size change 4.300%libpcap.so.8: size change 1.200%libpjdlog.so.0: size change .100%librss.so.1: size change .200%librt.so.1: size change .100%libsbuf.so.6: size change .100%libspl.so.2: size change 0%libssp.so.0: size change .100%libstats.so.0: size change .100%libsys.so.7: size change .100%libthr.so.3: size change 2.400%libtinfow.so.9: size change 1.600%libtpool.so.2: size change .100%libufs.so.8: size change .100%libulog.so.0: size change .100%libumem.so.2: size change 54.300%		exceptionallibutil.so.9: size change .100%libuutil.so.2: size change .100%libxo.so.0: size change .100%libz.so.6: size change .100%libzdb.so.2: size change .300%libzfs_core.so.2: size change .100%libzfs.so.4: size change 2.000%libzfsbootenv.so.1: size change .100%libzpool.so.2: size change 1.200%libzutil.so.2: size change 0%

            List of files:
            /src/tools/build/options/WITHOUT_ZEROREGS</description>
        <pubDate>Sat, 11 Jan 2025 12:48:50 +0000</pubDate>
        <dc:creator>Alexander Leidinger &lt;Alexander@Leidinger.net&gt;</dc:creator>
    </item>
<item>
        <title>2a44cccd404d94c273c78e279df3fdc5531d25a2 - Add option to clear caller-used registers on function return.</title>
        <link>http://opengrok.net:8080/history/src/tools/build/options/WITHOUT_ZEROREGS#2a44cccd404d94c273c78e279df3fdc5531d25a2</link>
        <description>Add option to clear caller-used registers on function return.The WITH_ZEROREGS option for src.conf will zero caller-used registercontents just before returning from a function, ensuring thattemporary values are not leaked beyond the function boundary. Thismeans that register contents are less likely to be available for sidechannel attacks and information exposures.It reduces all except 1 of the simple &quot;write-what-where&quot; ROP gadgets in/lib:    grep &quot;Gadget found&quot; /tmp/before_lib* | wc -l     197    grep &quot;Gadget found&quot; /tmp/after_lib* | wc -l       1    grep &quot;Gadget found&quot; /tmp/after_lib*    /tmp/after_libbsdxml.so.4.txt:  [+] Gadget found: 0x1b3f1 mov qword ptr [rdi], rcx ; pop rbp ; retTo reproduce:    for lib in *.so.*; do        echo $lib:        ROPgadget --ropchain --binary /tmp/be_mount.Sx87/lib/$lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;! /tmp/before_$lib.txt        ROPgadget --ropchain --binary $lib | sed -n &apos;/Step 1/,/Step 2/p&apos; &gt;!  /tmp/after_$lib.txt    doneAdditionally, in some cases this reduces the number of all ROP gadgets(quick check with /libs only):libalias.so.7: reduction 10.000%libavl.so.2: reduction 13.900%libbsdxml.so.4: reduction 37.500%libc.so.7: reduction 10.000%libc++.so.1: reduction 14.800%libcam.so.7: reduction 50.700%libcap_netdb.so.1: reduction 5.800%libcasper.so.1: reduction 14.600%libcrypto.so.30: reduction 7.500%libdtrace.so.2: reduction 3.900%libelf.so.2: reduction 15.800%libgcc_s.so.1: reduction 32.700%libibverbs.so.1: reduction 5.300%libicp.so.3: reduction 2.100%libipt.so.0: reduction 28.200%libirdma.so.1: reduction 1.600%libkiconv.so.4: reduction 0%libm.so.5: reduction 21.900%libmd.so.6: reduction 0%libmd.so.7: reduction 3.100%libncursesw.so.9: reduction 11.200%libnvpair.so.2: reduction 40.200%libpcap.so.8: reduction 11.400%libpjdlog.so.0: reduction 27.400%libsbuf.so.6: reduction 2.900%libspl.so.2: reduction 42.300%libsys.so.7: reduction 2.700%libthr.so.3: reduction 21.000%libuutil.so.2: reduction 13.100%libz.so.6: reduction 5.600%libzpool.so.2: reduction 15.100%In some cases it adds some ROP gadgets despite removing the simple ROPgadgets:lib80211.so.1: reduction -32.700%libbe.so.1: reduction -22.300%libbegemot.so.4: reduction -20.500%libcap_dns.so.2: reduction -58.000%libcap_fileargs.so.1: reduction -28.200%libcap_grp.so.1: reduction -54.000%libcap_net.so.1: reduction -28.800%libcap_pwd.so.1: reduction -38.800%libcap_sysctl.so.2: reduction -71.100%libcap_syslog.so.1: reduction -15.000%libcrypt.so.5: reduction -14.600%libctf.so.2: reduction -.300%libcxxrt.so.1: reduction -14.000%libdevstat.so.7: reduction -1.600%libedit.so.8: reduction -4.200%libgeom.so.5: reduction -16.500%libicp_rescue.so.3: reduction -2.300%libipsec.so.4: reduction -31.800%libjail.so.1: reduction -21.700%libkvm.so.7: reduction -5.300%libmlx5.so.1: reduction -6.300%libmt.so.5: reduction -23.000%libnv.so.1: reduction -.400%librss.so.1: reduction -3.800%librt.so.1: reduction -24.000%libssp.so.0: reduction -21.100%libstats.so.0: reduction -9.000%libtinfow.so.9: reduction -3.500%libtpool.so.2: reduction -36.500%libufs.so.8: reduction -11.900%libulog.so.0: reduction -67.400%libumem.so.2: reduction -2.000%libutil.so.9: reduction -7.200%libxo.so.0: reduction -9.000%libzdb.so.2: reduction -11.700%libzfs_core.so.2: reduction -17.700%libzfs.so.4: reduction -.300%libzfsbootenv.so.1: reduction -26.900%libzutil.so.2: reduction -5.600%To reproduce:    for lib in *.so.*; do        echo -n $lib:        before=&quot;$(ROPgadget --nosys --nojop --binary /tmp/be_mount.Sx87/lib/$lib | tail -n1 | cut -d : -f 2)&quot;        after=&quot;$(ROPgadget --nosys --nojop --binary $lib | tail -n1 | cut -d : -f 2)&quot;        echo &quot; reduction&quot; $(bc -S 3 -e &quot;(1-${after}/${before})*100&quot;)%    done &gt;/tmp/reduction.txtMost of the time the size difference is very small (&lt;1% for &gt;50% of thefiles and &gt;10% for only 2 files):lib80211.so.1: size change .100%libalias.so.7: size change 0%libavl.so.2: size change 0%libbe.so.1: size change .100%libbegemot.so.4: size change .100%libbsdxml.so.4: size change 0%libc.so.7: size change 1.200%libc++.so.1: size change 1.600%libcam.so.7: size change 1.900%libcap_dns.so.2: size change .100%libcap_fileargs.so.1: size change .100%libcap_grp.so.1: size change .100%libcap_net.so.1: size change .100%libcap_netdb.so.1: size change .100%libcap_pwd.so.1: size change .100%libcap_sysctl.so.2: size change .100%libcap_syslog.so.1: size change .100%libcasper.so.1: size change 0%libcrypt.so.5: size change 3.900%libcrypto.so.30: size change 1.400%libctf.so.2: size change .100%libcxxrt.so.1: size change .100%libdevstat.so.7: size change 15.400%		exceptionallibdtrace.so.2: size change .600%libedit.so.8: size change 1.800%libelf.so.2: size change .100%libgcc_s.so.1: size change 3.000%libgeom.so.5: size change 0%libibverbs.so.1: size change .100%libicp_rescue.so.3: size change .100%libicp.so.3: size change 1.500%libipsec.so.4: size change .100%libipt.so.0: size change 3.100%libirdma.so.1: size change .100%libjail.so.1: size change .100%libkiconv.so.4: size change .100%libkvm.so.7: size change .100%libm.so.5: size change 1.700%libmd.so.6: size change 0%libmd.so.7: size change .100%libmlx5.so.1: size change 0%libmt.so.5: size change .100%libncursesw.so.9: size change 1.900%libnv.so.1: size change 4.300%libnvpair.so.2: size change 4.300%libpcap.so.8: size change 1.200%libpjdlog.so.0: size change .100%librss.so.1: size change .200%librt.so.1: size change .100%libsbuf.so.6: size change .100%libspl.so.2: size change 0%libssp.so.0: size change .100%libstats.so.0: size change .100%libsys.so.7: size change .100%libthr.so.3: size change 2.400%libtinfow.so.9: size change 1.600%libtpool.so.2: size change .100%libufs.so.8: size change .100%libulog.so.0: size change .100%libumem.so.2: size change 54.300%		exceptionallibutil.so.9: size change .100%libuutil.so.2: size change .100%libxo.so.0: size change .100%libz.so.6: size change .100%libzdb.so.2: size change .300%libzfs_core.so.2: size change .100%libzfs.so.4: size change 2.000%libzfsbootenv.so.1: size change .100%libzpool.so.2: size change 1.200%libzutil.so.2: size change 0%

            List of files:
            /src/tools/build/options/WITHOUT_ZEROREGS</description>
        <pubDate>Sat, 11 Jan 2025 12:48:50 +0000</pubDate>
        <dc:creator>Alexander Leidinger &lt;Alexander@Leidinger.net&gt;</dc:creator>
    </item>
</channel>
</rss>
